Formule de recherche

Bonjour a tous

Dans ma colonne A j'ai une suite de facture dans la quel j'ai des manquant

exemple :1-2-3-4-5-6- 10, la il manque la facture de 7 a 9

je recherche la formule afin de trouver dans ma colonne a: les manquant

merci pour votre aide

ci joint mon fichier

14seb.xlsx (23.10 Ko)

Bonjour

Un essai

Cordialement

13seb.xlsx (61.22 Ko)

Bonjour le fil, bonjour le forum,

Une proposition par macro au cas où... (je te conseille quand même l'utilisation de la formule d'Amadéus)

le code :

Sub Macro1()
Dim TV As Variant 'déclare la variable TV (Tableau des valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Long 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim J As Integer 'déclare la variable J (incrément)
Dim TN() As Variant 'déclare la variable TN (Tableau des Nombres)
Dim K As Long 'déclare la variable K (incrément)
Dim L As Long 'déclare la variable L (incrément)
Dim MSG As String 'déclare la variable MSG (MeSsaGe)

TV = Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) - 1 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde jusqu'à l'avant dernière)
    D(Split(TV(I, 1), "/")(0)) = "" 'alimente le dictionnaire D avec le nombre avant le slash ('xx'/) de la ligne I du tableau des valeurs TV
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tabelau temporaire TMP la liste des éléments du dictionnaire D sans doublons (les nombres avant le slash)
For J = 0 To UBound(TMP) 'boucle 1 sur tous les éléments du tableau temporaire TMP
    Erase TN 'vide le tableau des lignes TN
    K = 0 'initialise la variable K
    For I = 2 To UBound(TV, 1) - 1 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde jusqu'à l'avant dernière)
        If Split(TV(I, 1), "/")(0) = TMP(J) Then 'condition : si le  nombre devant le slash ('xx'/) est égal à TMP(J)
            ReDim Preserve TN(K) 'redimensionne le tableau des lignes TN
            TN(K) = CInt(Split(TV(I, 1), "/")(1)) 'récupère dans la ligne K du tableau des nombres TN le nombre après le slash
            K = K + 1 'incrémente K
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    For L = 1 To UBound(TN) 'boucle 3 : sur tous les valeurs du tableau des nombres TN (en partant de la seconde)
        If TN(L) <> TN(L - 1) + 1 Then 'condition si la valeur est différente de la valeur juste avant elle plus 1
            'définit le message MSG (nombre avant le slash, suivi d'un slash,suivi du nombre après le slash au format "00000", suivi d'un saut de ligne)
            MSG = IIf(MSG = "", TMP(J) & "/" & Format(TN(L) - 1, "00000") & Chr(13), MSG & TMP(J) & "/" & Format(TN(L) - 1, "00000") & Chr(13))
        End If 'fin de la condition
    Next L 'prochain nombre de la boucle 3
Next J 'prochain élément de la boucle 1
MsgBox MSG 'message affichant MSG
End Sub
Rechercher des sujets similaires à "formule recherche"