Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

trouver dans une colonne le premier chiffre manquant

  • Initiateur de la discussion Initiateur de la discussion zephir94
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonjour à tous,

je voudrais trouver dans une colonne le premier chiffre manquant, je m'explique :
Disons qu'en A1 j'ai la valeur 1, en A2 la valeur 2, A3 la valeur 3... A100 la valeur 100.
Imaginons qu'il manque la valeur 8, je voudrais faire une boucle qui recherche la première valeur numérique manquante dans cette liste, soit 8 dans cet exemple

Merci par avance pour vos aides
 
Re : trouver dans une colonne le premier chiffre manquant

Pour l'instant j'ai écris :

Code:
Sub test()
dim x
dim w
dim i
dim u

x = Feuil1.Range("C9:C65536").End(xlDown).Row
w = Feuil1.Range("C" & w).Value
For i = 1 To w
Set celluletrouvee = Range("C9:C65536").Find(i, lookat:=xlWhole)
If celluletrouvee Is Nothing Then
MsgBox ("pas trouvé" & i)
Else
u = celluletrouvee.Row
'MsgBox ("trouvé ligne" & u)
End If
Next
End Sub

En premier lieux je recherche la dernière ligne écrite, je recherche dans cette ligne la valeur numérique pour tester dans une boucle allant de 1 à la dernière valeur numérique existante

mais c'est peut-être un peu lourd, du genre écraser une mouche avec un marteau !
 
Dernière édition:
Re : trouver dans une colonne le premier chiffre manquant

Bonjour zephir94,

Dans ton exemple, la valeur manquante correspondra à sa position dans la liste. Dans ce cas précis, tu peux tester
Code:
=EQUIV(VRAI;ESTVIDE(A1:A100);0)
... dans une cellule de ton choix. Valider avec Ctrl+Shift+Enter

Si l'exemple était "trop beau", le mieux serait un fichier avec des exemples des différents cas possibles
 
Re : trouver dans une colonne le premier chiffre manquant

Bonjour modeste, merci pour ta réponse.

Pas forcement car si la ligne 97 par exemple a été supprimer ! je voudrais prioritairement combler la liste en proposant le numéro 97
à la prochaine saisie.

Je cherche une solution en VBA, j'ai pas mal avancé dans mon code mais je le trouve lourd et peut-être inutilement long
si tu as une solution à me proposer dans ce sens je t'en remercie par avance
 
Dernière édition:
Re : trouver dans une colonne le premier chiffre manquant

Re,

Il n'y aura pas de cellules vides, en réalité, mais une valeur manquante dans une série (j'étais parti sur une autre idée, vu le manque de précision)
Il s'agira donc toujours de valeurs consécutives?
La première sera toujours '1' ... ou pas?
L'emplacement sera toujours le même (tu avais parlé de A1 à A100, mais ta macro examine une plage démarrant en C9)?
Précise aussi si le volume sera toujours de l'ordre d'une centaine ou potentiellement de beaucoup plus!?
 
Re : trouver dans une colonne le premier chiffre manquant

Bonjour zephir94, Modeste,

Pas sûr d'avoir tout compris, mais ci dessous un essai qui ne fonctionne que si :
-la progression entre cellules est de +1
-la cellule est vide pour la valeur manquante

Code:
Sub Manquant()
 Dim i As Long, LigDeb As Byte

 '******* à adapter *****
 LigDeb = 1
 With Worksheets("Feuil1")
 '************************
 For i = LigDeb To .Range("A" & .Rows.Count).End(xlUp).Row
    If .Cells(i, 1) = "" Then
        MsgBox "il manque la valeur : " & .Cells(i, 1).Offset(-1, 0) + 1 & " en ligne " & i
        Exit For
    End If
 Next
 End With
End Sub


A+
 
Re : trouver dans une colonne le premier chiffre manquant

Merci modeste de t'intéresser à mon problème du jour,

Je commence effectivement en ligne 9 car ma liste va commencer là.
Bien vue la valeur numérique 1 peut effectivement disparaître donc il va falloir que je l’intègre !
Si tu veux la liste va s'allonger au fur et à mesure de la saisie des utilisateur et dans la même utilisation diminuer si il s'en supprime.
pour éviter d'avoir 1,3,12... je voudrais obliger les utilisateur à prendre la première valeur numérique manquante pour reconstituer une liste allant de 1 à .... avec 1,2,3,4.....

J'espère avoir été plus claire !
 
Re : trouver dans une colonne le premier chiffre manquant

bon j'ai géré si la liste ne commence pas par 1 ( merci modeste de m'avoir alerté sur ce point )

Code:
Sub test()


x = Feuil1.Range("C9:C65536").End(xlDown).Row
w = Feuil1.Range("C" & x).Value

If Range("C9").Value <> 1 Then
Rows(9).Insert Shift:=xlDown
Range("C9").Value = 1
' suite de remplissage des données dans la ligne 9
End If
For i = 1 To w
Set celluletrouvee = Range("C9:C65536").Find(i, lookat:=xlWhole)
If celluletrouvee Is Nothing Then

MsgBox ("pas trouvé" & i)

Else
u = celluletrouvee.Row
'MsgBox ("trouvé ligne" & u)
End If
Next
End Sub
 
Re : trouver dans une colonne le premier chiffre manquant

Re²
Salut Paf 🙂

Un essai, avec ce que j'ai compris, cette fois!?
VB:
Sub manquant()
derlig = Cells(Rows.Count, 3).End(xlUp).Row
i = 1
tablo = [C9].Resize(derlig - 8, 1)
If tablo(1, 1) <> 1 Then MsgBox "Pas de 1 en première position": Exit Sub
If UBound(tablo) = Application.Max([C9].Resize(derlig - 8, 1)) Then MsgBox "pas de manquant!": Exit Sub
Do
    If tablo(i, 1) + 1 <> tablo(i + 1, 1) Then MsgBox tablo(i, 1) + 1 & " manquant en ligne " & 9 + i: Exit Do
    i = i + 1
Loop While i <= UBound(tablo)
End Sub

Si pas ça, fournis-nous un fichier avec des exemples!
 
Re : trouver dans une colonne le premier chiffre manquant

Je vais tester ta proposition

Voici la trame de ma prog ( qui fonctionne mais lourde ! )

Code:
Sub test()


x = Feuil1.Range("C9:C65536").End(xlDown).Row
w = Feuil1.Range("C" & x).Value

If Range("C9").Value <> 1 Then
Rows(9).Insert Shift:=xlDown
Range("C9").Value = 1
' suite de remplissage des données
Exit Sub
End If
For i = 1 To w
Set celluletrouvee = Range("C9:C65536").Find(i, lookat:=xlWhole)
If celluletrouvee Is Nothing Then

MsgBox ("pas trouvé" & i)
' proposition du premier chiffre manquant
' si vbyesno= oui
' remplissage des données avec i en incérant la ligne entre i-1 et i+1
' exit sub
' else
' remplissage des données à la dernière ligne vide avec w+1
' exit sub
Else
u = celluletrouvee.Row
MsgBox ("trouvé ligne" & u)
' remplissage des données à la dernière ligne vide avec w+1
'exit sub
End If
Next
End Sub
 
Re : trouver dans une colonne le premier chiffre manquant

Bonjour zephir94, Modeste, Paf,

Moi aussi j'aime bien le VBA mais c'est vraiment simple par formule matricielle :

Code:
=INDEX(A:A;EQUIV(VRAI;A2:A1001<>A1:A1000+1;0))+1
ou un peu plus compliquée dynamiquement :

Code:
=INDEX(A:A;EQUIV(VRAI;DECALER(A2;;;NB(A:A))<>DECALER(A1;;;NB(A:A))+1;0))+1
Toutes à valider bien sûr par Ctrl+Maj+Entrée.

A+
 
Re : trouver dans une colonne le premier chiffre manquant

Merci à toi Job75,

Mon projet est en VBA mais étant curieux de nature je vais me pencher aussi sur ta proposition.
Trouves tu mon code affreux ?
Je sais que tu fais parti des mentors experts de ce forum et ton expertise m'intéresse, comme tu le sais je suis débutant +
en constante source d'amélioration !
 
Re : trouver dans une colonne le premier chiffre manquant

Bonjour à tous,

un autre essai pour le fun:
VB:
Sub absent()
  adr = Range(Cells(9, 3), Cells(Rows.Count, 3).End(xlUp)).Address(0, 0)
  frml = Replace("=MIN(IF(ROW(adr)-8=adr,"""",ROW(adr)))", "adr", adr)
  i = Application.Evaluate(frml)
  MsgBox IIf(i > 0, i - 8 & " absent en ligne " & i, "Suite OK")
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…