Comment trouver les nombres manquants dans une série Excel ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comment créer une macro VBA qui détecte automatiquement les références produits manquantes dans votre inventaire.

Cette solution va vous faire gagner un temps considérable en identifiant instantanément les numéros de référence absents de votre catalogue, même si vos données sont réparties sur plusieurs colonnes, contiennent des doublons ou des cellules vides.

Nous allons construire ensemble un outil professionnel et flexible qui s'adapte à toutes les situations.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Présentation

 

Pour illustrer ce tutoriel, nous allons utiliser la base de facturation suivante d'un grossiste en vente de vêtements.

Ce tableau contient des numéros factures qui devraient normalement se suivre de manière séquentielle, mais une analyse rapide permet de se rendre compte que certaines ont disparu de notre fichier.

Excel formation - 0082 - 01

Dans cet exemple, nous constatons plusieurs particularités qui rendent la tâche complexe si nous devions chercher manuellement.

Tout d'abord, nous voyons que les données sont classées par nom de client, et donc les numéros de factures ne sont triées par ordre croissant, ce qui complique la détection visuelle des trous dans la séquence.

Enfin, si nous analysons bien, nous voyons qu’il manque plusieurs numéros dans cette séquence.

Nous allons donc souhaiter créer une petite macro qui va identifier la référence minimale et maximale, puis parcourir tous les nombres intermédiaires pour détecter ceux qui sont absents.

Cette solution nous donnera ces résultats en quelques secondes seulement.

 

2. Création et structure de la macro VBA

 

   2.1 Ouverture de l'éditeur VBA

 

Nous commençons par ouvrir l'éditeur Visual Basic, qui est l’outil qui va nous permettre d'écrire notre code en appuyant simultanément sur les touches [Alt]+[F11].

Excel formation - 0082 - 02

Si c'est la première fois que vous utilisez cet éditeur, ne vous inquiétez pas, nous allons tout détailler pas à pas.

Une fois l'éditeur ouvert, nous voyons sur la gauche un explorateur de projets qui affiche la structure de notre classeur Excel.

Nous devons maintenant insérer un nouveau module qui va contenir notre code.

Pour cela, nous faisons un clic droit sur le nom de notre projet, nous sélectionnons « Insertion », puis nous cliquons sur « Module ».

Excel formation - 0082 - 03

Un nouveau module apparaît avec une feuille de code vierge sur laquelle nous allons travailler.

 

   2.2 Déclaration de la procédure et des variables

 

Nous allons maintenant créer notre procédure que nous nommons « TrouverReferencesManquantes », en utilisant le mot-clé « Sub », suivi du nom que nous souhaitons attribuer à la macro.

Lorsque nous validons en appuyant sur [Entrée], Excel ajoute automatiquement la ligne « End Sub », qui vient marquer la fin de la macro.

Excel formation - 0082 - 04

Tout ce que nous allons saisir entre ces deux lignes sera exécuté automatiquement à chaque fois que nous appellerons la macro.

Ensuite, nous allons créer les variables utiles à l’exécution de celle-ci.

Nous saisissons le code suivant pour démarrer notre macro :

Sub TrouverReferencesManquantes()
    Dim plageEntree As Range, plageSortie As Range
    Dim i As Variant
    Dim resultats As String

En développement, une variable permet de stocker des informations, afin d’y accéder par la suite pour effectuer des traitements.

Pour guider la manière dont nous souhaitons que le code soit exécuté, nous allons attribuer un type en utilisant le mot-clé « as ».

Chaque variable a un rôle précis dans notre programme :

  • La variable « plageEntree » va stocker la sélection de cellules contenant nos références produits, nous la typons donc en tant que « Range », c’est-à-dire en tant que plage de cellules
  • La variable « plageSortie » contiendra l'emplacement où nous voulons afficher nos résultats.
  • La variable « i » servira à passer en revue les différents éléments dans les boucles que nous allons mettre en place. Nous la typons donc en tant que Variant, c’est-à-dire que nous ne lui attribuons pas de type particulier.
  • Le variable « resultats » va nous permettre d’enregistrer toutes les références manquantes au fur et à mesure que nous les découvrons, en les séparant par des points-virgules.

 

   2.3 Récupération de la plage d'entrée

 

Nous allons maintenant enregistrer les cellules sélectionnées par l’utilisateur contenant les références à analyser. Nous ajoutons ce code :

    Set plageEntree = Selection
    If plageEntree.Count <= 1 Then Exit Sub

Cette instruction enregistre la sélection dans la variable « plageEntree » et vérifie si l'utilisateur a bien sélectionné au moins deux cellules avant de lancer la macro.

Si ce n’est pas le cas, l’analyse ne sera pas pertinente, nous quittons donc immédiatement la macro avec « Exit Sub ».

 

3. Identification des références manquantes

 

3.1 Identification des valeurs manquantes entre les bornes

 

Maintenant que nous avons notre plage de données, nous devons identifier quelle est la référence la plus basse et la plus haute pour savoir entre quelles valeurs nous devons chercher, afin de parcourir toutes les valeurs numériques qui se trouvent entre ces bornes, et pour chacun, vérifier s'il existe dans notre plage de données.

Voici le code à ajouter :

Nous ajoutons ces lignes :

    For i =  WorksheetFunction.Min(plageEntree) To WorksheetFunction.Max(plageEntree)         
        If plageEntree.Find(i) Is Nothing  Then
            …
        End If
    Next

Ces deux fonctions Excel intégrées parcourent automatiquement toute notre plage et retournent respectivement la valeur minimale et maximale.

Nous savons donc que nous devons vérifier l'existence de tous les nombres entre ces deux bornes, incluses.

Pour cela, nous intégrons ces valeurs dans une boucle « For », qui va exécuter le code contenu entre « For » et « Next » pour chaque valeur de « i » comprises entre ces bornes.

À chaque itération, nous utilisons la méthode « Find » pour rechercher la valeur actuelle de « i » dans notre plage. *

Si « Find » ne trouve pas la valeur dans les cellules sélectionnées, alors, il nous renverra « Nothing ».

Nous pourrons donc capturer cette valeur pour l’ajouter dans la variable résultat.

        If plageEntree.Find(i) Is Nothing  Then
            resultats = resultats & i  & ";"
        End If

   3.2 Gestion des cas sans résultat

 

Avant de passer à l'affichage, nous devons vérifier qu'il y a effectivement des références manquantes à afficher. Nous ajoutons cette vérification :

    If resultats = "" Then
        MsgBox "Aucune référence manquante détectée. "
        Exit Sub
    End If

Si notre variable « resultat » reste vide, cela signifie que toutes les références entre le minimum et le maximum sont présentes dans notre inventaire.

Dans ce cas, nous affichons un message informatif à l'utilisateur et nous quittons la macro.

Cette étape est importante car elle évite d'afficher une erreur ou un résultat vide si tout est en ordre.

 

4. Affichage des résultats

 

   4.1 Sélection de la zone d'affichage

 

Nous devons maintenant demander à l'utilisateur où il souhaite voir apparaître la liste des références manquantes. Nous ajoutons donc ce code :

    Set plageSortie = Application.InputBox("Cliquez sur  la cellule de départ pour afficher les résultats", "Emplacement des  résultats", Type:=8)
    If plageSortie Is Nothing Then Exit Sub

Cette instruction utilise la méthode « InputBox » avec le paramètre « Type:=8 », ce qui indique à Excel que nous attendons une sélection de plage de cellules.

L'utilisateur peut alors cliquer avec sa souris sur Excel pour sélectionner la zone contenant ses références.

Maintenant, nous allons réduire la plage sélectionnée uniquement à la première des cellules, au cas où l’utilisateur aurait sélectionnée plusieurs cellules.

    Set plageSortie = plageSortie.Cells(1, 1)

Pour finir, il ne reste plus qu’à afficher les résultat dans la feuille Excel.

Pour cela, nous allons commencer par afficher un message dans la cellule de destination :

    plageSortie = "Voici les valeurs  manquantes :"
    Set plageSortie = plageSortie.Offset(1, 0)

Une fois le message affiché, nous passons à la ligne en utilisant l’instruction Offset qui permet d’affecter à la variable plageSortie la cellule située juste en dessous.

Puis, nous allons mettre en place une nouvelle boucle « For » pour passer en revue tous les résultats, en réutilisant à nouveau la variable « i », et en utilisant la méthode « Split » d’Excel pour scinder la chaine « resultat » en utilisant le point-virgule :

    For i in Split(resultat, ";")
       …
    Next

Enfin, il ne reste plus qu’à afficher le résultat dans la cellule plageSortie et passer à la ligne du dessous :

    For i in Split(resultat, ";")
            plageSortie = i
           Set plageSortie = plageSortie.Offset(1, 0)
    Next

Pour tester la macro, il ne reste plus qu’à revenir sur notre feuille de calcul, sélectionner les numéros de factures à analyser, puis appuyer sur [Alt]+[F8] pour afficher les liste des macros accessibles dans le classeur.

Nous sélectionnons ensuite la macro « TrouverReferencesManquantes », puis nous validons avec « Exécuter » :

Excel formation - 0082 - 05

La macro va alors s'exécuter et nous retourner la liste des valeurs manquantes.

Excel formation - 0082 - 06

Les points forts de notre solution sont nombreux :

  • Premièrement, elle fonctionne quelle que soit l'organisation de vos données : une seule colonne, plusieurs colonnes, plusieurs lignes, avec des cellules vides entremêlées.
  • Deuxièmement, elle gère parfaitement les doublons puisque la méthode « Find » détecte simplement la présence ou l'absence d'une valeur.
  • Troisièmement, elle offre une flexibilité totale dans l'affichage des résultats, s'adaptant automatiquement à vos préférences de présentation.

Vous pouvez facilement adapter cette macro à d'autres contextes : numéros de factures séquentiels, codes employés, numéros de série de matériel, références de commandes, ou tout autre système de numérotation continue.

Il suffit de sélectionner la bonne plage de données et la macro fait le reste.

 

 



Articles qui pourraient vous intéresser

Comment trouver les nombres manquants dans une série Excel ?
Comment créer une liste déroulante à deux niveaux sur Excel : La méthode simple et visuelle
Comment identifier la plus grande variation de performances dans Excel (en valeur absolue)
Comment transformer 10 minutes d'Export PDF en 5 secondes avec une MACRO puissante grâce à Excel
STOP aux listes déroulantes limitées ! Sélectionnez PLUSIEURS valeurs dans UNE SEULE cellule Excel
Comment transformer du texte brut en tableau structuré sur Excel avec Power Query
Comment compter et additionner par couleur de cellule sans VBA sur Excel
Comment évaluer et extraire des formules Excel avec des fonctions personnalisées ?
Astuce incroyable : Copier uniquement les cellules visibles dans Excel
Comment créez des graphiques Excel INTERACTIFS sans VBA avec les contrôles dynamiques ?
Comment utiliser des boutons pour sélectionner des données dans Excel (sans VBA)
Comment créer des graphiques Excel qui changent d'un simple clic et sans VBA (la technique que 99% des utilisateurs ignorent)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2026 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.