Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire apparaitre des nombres manquant d'une liste ?

13 réponses
Avatar
Cyril DUPONT
Bonjour,

J'ai une feuille excel qui comporte quelques colonnes mais plus de 4500
lignes qui ressemble à ça :
...
210000022
210000023
210000023 R
210000024
210000026
210000028
etc...

Je voudrait pouvoir déceler avec une formule ou un code tous les nombres
manquants sachant qu'ils sont déjà triés... Comment faire par exemple dans ce
cas précis pour avoir comme "résultats" les 2 nombres manquants qui sont
210000025 & 210000027 ?

Cyril.

10 réponses

1 2
Avatar
FFO
Salut Cyril
Prenant la colonne A de la feuille 1 à analyser
Le résultat étant afficher dans une boite de dialogue
Je te propose ceci :

For Each c In Worksheets("feuil2").Range([A1], [A65535].End(xlUp))
If c.Value <> c.Offset(1, 0).Value - 1 And c.Address <>
Range("A65535").End(xlUp).Address Then
n = c.Value + 1
Do While n <> c.Offset(1, 0).Value
MsgBox (n & " Manquant")
n = n + 1
Loop
End If
Next

Qu'en dis tu ???
Dis moi

Bonjour,

J'ai une feuille excel qui comporte quelques colonnes mais plus de 4500
lignes qui ressemble à ça :
...
210000022
210000023
210000023 R
210000024
210000026
210000028
etc...

Je voudrait pouvoir déceler avec une formule ou un code tous les nombres
manquants sachant qu'ils sont déjà triés... Comment faire par exemple dans ce
cas précis pour avoir comme "résultats" les 2 nombres manquants qui sont
210000025 & 210000027 ?

Cyril.


Avatar
Cyril DUPONT
J'ai essayé de mettre le code dans worksheet ou thisworkbook mais rien ne se
passe... Je suis novice pourrais tu m'expliquer comment je m'en sers ?

Merci, Cyril.



Salut Cyril
Prenant la colonne A de la feuille 1 à analyser
Le résultat étant afficher dans une boite de dialogue
Je te propose ceci :

For Each c In Worksheets("feuil2").Range([A1], [A65535].End(xlUp))
If c.Value <> c.Offset(1, 0).Value - 1 And c.Address <>
Range("A65535").End(xlUp).Address Then
n = c.Value + 1
Do While n <> c.Offset(1, 0).Value
MsgBox (n & " Manquant")
n = n + 1
Loop
End If
Next


Avatar
FFO
Attention Thisworkbook n'est à utiliser que pour l'éxécution de code à
l'ouverture ou à la fermeture du document

Réalise plutôt une nouvelle Macro dans laquelle tu integreras mon code

Dis moi si tu as des difficultés


J'ai essayé de mettre le code dans worksheet ou thisworkbook mais rien ne se
passe... Je suis novice pourrais tu m'expliquer comment je m'en sers ?

Merci, Cyril.



Salut Cyril
Prenant la colonne A de la feuille 1 à analyser
Le résultat étant afficher dans une boite de dialogue
Je te propose ceci :

For Each c In Worksheets("feuil2").Range([A1], [A65535].End(xlUp))
If c.Value <> c.Offset(1, 0).Value - 1 And c.Address <>
Range("A65535").End(xlUp).Address Then
n = c.Value + 1
Do While n <> c.Offset(1, 0).Value
MsgBox (n & " Manquant")
n = n + 1
Loop
End If
Next




Avatar
FFO
Procédure pour créer une macro
Simple à mettre en oeuvre :
Création de la Macro :
Outils/Macro/Nouvelle Macro
Nom de la Macro : "Comparaison" par exemple
Puis Ok
Outils/Macro/Macro
Selectionner Comparaison et Modifier
Sous Sub Comparaison()
Faire un Copier/Coller de mon code
Fichier/Enregistrer

Utilisation de la macro :
Outils/Macro/Macro
Selectionner Comparaison et Executer



J'ai essayé de mettre le code dans worksheet ou thisworkbook mais rien ne se
passe... Je suis novice pourrais tu m'expliquer comment je m'en sers ?

Merci, Cyril.



Salut Cyril
Prenant la colonne A de la feuille 1 à analyser
Le résultat étant afficher dans une boite de dialogue
Je te propose ceci :

For Each c In Worksheets("feuil2").Range([A1], [A65535].End(xlUp))
If c.Value <> c.Offset(1, 0).Value - 1 And c.Address <>
Range("A65535").End(xlUp).Address Then
n = c.Value + 1
Do While n <> c.Offset(1, 0).Value
MsgBox (n & " Manquant")
n = n + 1
Loop
End If
Next




Avatar
Cyril DUPONT
Nickel ça fonctionne avec toute tes explications ! Malheureusement pour moi
ça fonctionne trop bien ^^
les nombres que j'ai sont compris entre 210000000 et 210003012... et la
macro me dit qu'il manque le 1, le 2, le 3 etc...

Comment faire pour qu'il compte entre ces 2 nombres seulement ?

Cyril.



Procédure pour créer une macro
Simple à mettre en oeuvre :
Création de la Macro :
Outils/Macro/Nouvelle Macro
Nom de la Macro : "Comparaison" par exemple
Puis Ok
Outils/Macro/Macro
Selectionner Comparaison et Modifier
Sous Sub Comparaison()
Faire un Copier/Coller de mon code
Fichier/Enregistrer

Utilisation de la macro :
Outils/Macro/Macro
Selectionner Comparaison et Executer


Avatar
Cyril DUPONT
Salut,

Même question a priori que pour FFO, pour ne pas avoir un comptage
commençant par 1,2,3...etc sachant que mes valeurs sont comprises entre
210000000 et 210003012 de la cellule A5à A4607 quelles sont les lignes de
code qu'il faut que je modifie ?

Merci, Cyril.



Bonjour,

Sub essai()
p = 1
fin = [A65000].End(xlUp)
n = Val([A1])
i = 1
Do While n < fin
If n <> Val(Cells(i, 1)) Then
Cells(p, 4) = n
p = p + 1
n = n + 1
Else
i = i + 1
If Val(Cells(i, 1)) <> Val(Cells(i - 1, 1)) Then n = n + 1
End If
Loop
End Sub

Sub essai()
p = 1
fin = [A65000].End(xlUp)
n = Val([A1])
i = 1
Do While n < fin
If n <> Val(Cells(i, 1)) Then
Cells(p, 4) = n
p = p + 1
n = n + 1
Else
i = i + 1
If Val(Cells(i, 1)) <> Val(Cells(i - 1, 1)) Then n = n + 1
End If
Loop
End SubSub essai()
p = 1
fin = [A65000].End(xlUp)
n = Val([A1])
i = 1
Do While n < fin
If n <> Val(Cells(i, 1)) Then
Cells(p, 4) = n
p = p + 1
n = n + 1
Else
i = i + 1
If Val(Cells(i, 1)) <> Val(Cells(i - 1, 1)) Then n = n + 1
End If
Loop
End Sub


Avatar
Cyril DUPONT
En fait nan ça fonctionne pas si bien que ça car j'ai des doublons et j'ai
fait un essai et ils ne sont pas pris en compte. En fait le code prend la
première cellule comme référence A1=5 par exemple. Si A2=7 il va dire qu'il
manque 6. Mais si A2=5 et A3=7 il va dire qu'il manque 6,7,8,9...

C'est compliqué à mettre en place pourtant ça a l'air si simple comme ça !?!

Cyril.



Procédure pour créer une macro
Simple à mettre en oeuvre :
Création de la Macro :
Outils/Macro/Nouvelle Macro
Nom de la Macro : "Comparaison" par exemple
Puis Ok
Outils/Macro/Macro
Selectionner Comparaison et Modifier
Sous Sub Comparaison()
Faire un Copier/Coller de mon code
Fichier/Enregistrer

Utilisation de la macro :
Outils/Macro/Macro
Selectionner Comparaison et Executer


Avatar
JB
Bonjour,

Extrait les nos manquants

Sub essai()
p = 1
i = 5 ' ligne début
fin = Val([A65000].End(xlUp))
n = Val(Cells(i, 1))
Do While n < fin
If n <> Val(Cells(i, 1)) Then
Cells(p, 4) = n
p = p + 1
n = n + 1
Else
i = i + 1
If Val(Cells(i, 1)) <> Val(Cells(i - 1, 1)) Then n = n + 1
End If
Loop
End Sub

http://cjoint.com/?eApYUFNhDB

JB


On 26 avr, 09:58, Cyril DUPONT
wrote:
Bonjour,

J'ai une feuille excel qui comporte quelques colonnes mais plus de 4500
lignes qui ressemble à ça :
...
210000022
210000023
210000023 R
210000024
210000026
210000028
etc...

Je voudrait pouvoir déceler avec une formule ou un code tous les nombres
manquants sachant qu'ils sont déjà triés... Comment faire par exemp le dans ce
cas précis pour avoir comme "résultats" les 2 nombres manquants qui s ont
210000025 & 210000027 ?

Cyril.


Avatar
FFO
A tout problème une solution

Une petite modification de mon code intégrant 2 cellules consécutives égales :

For Each c In Worksheets("feuil2").Range([A1], [A65535].End(xlUp))
If c.Value <> c.Offset(1, 0).Value And c.Value <> c.Offset(1, 0).Value - 1
And c.Address <> Range("A65535").End(xlUp).Address Then
n = c.Value + 1
Do While n <> c.Offset(1, 0).Value
MsgBox (n & " Manquant")
n = n + 1
Loop
End If
Next

Ca marche t'y pas mieux ????
Dis moi !!!

En fait nan ça fonctionne pas si bien que ça car j'ai des doublons et j'ai
fait un essai et ils ne sont pas pris en compte. En fait le code prend la
première cellule comme référence A1=5 par exemple. Si A2=7 il va dire qu'il
manque 6. Mais si A2=5 et A3=7 il va dire qu'il manque 6,7,8,9...

C'est compliqué à mettre en place pourtant ça a l'air si simple comme ça !?!

Cyril.



Procédure pour créer une macro
Simple à mettre en oeuvre :
Création de la Macro :
Outils/Macro/Nouvelle Macro
Nom de la Macro : "Comparaison" par exemple
Puis Ok
Outils/Macro/Macro
Selectionner Comparaison et Modifier
Sous Sub Comparaison()
Faire un Copier/Coller de mon code
Fichier/Enregistrer

Utilisation de la macro :
Outils/Macro/Macro
Selectionner Comparaison et Executer




Avatar
FFO
Je ne comprends pas ce que tu attends de la macro dans ce cas là
Peux tu préciser ???

Merci



Nickel ça fonctionne avec toute tes explications ! Malheureusement pour moi
ça fonctionne trop bien ^^
les nombres que j'ai sont compris entre 210000000 et 210003012... et la
macro me dit qu'il manque le 1, le 2, le 3 etc...

Comment faire pour qu'il compte entre ces 2 nombres seulement ?

Cyril.



Procédure pour créer une macro
Simple à mettre en oeuvre :
Création de la Macro :
Outils/Macro/Nouvelle Macro
Nom de la Macro : "Comparaison" par exemple
Puis Ok
Outils/Macro/Macro
Selectionner Comparaison et Modifier
Sous Sub Comparaison()
Faire un Copier/Coller de mon code
Fichier/Enregistrer

Utilisation de la macro :
Outils/Macro/Macro
Selectionner Comparaison et Executer




1 2