OVH Cloud OVH Cloud

Numéro manquants

11 réponses
Avatar
Crel
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de manière
aléatoire.(Ces tickets sont supposés se suivre, mais il y a des trous)
Est-il possible d' avoir une proc dans un msgbox qui me donne les numéros
manquants ?
Merci beaucoup
Patrick

10 réponses

1 2
Avatar
Nicolas B.
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N° compris
entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y a
des trous) Est-il possible d' avoir une proc dans un msgbox qui me
donne les numéros manquants ?
Merci beaucoup
Patrick


Avatar
Crel
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de numéros et B fin de
numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros manquants?
Patrick


"Nicolas B." a écrit dans le message de
news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N°
compris

entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y a
des trous) Est-il possible d' avoir une proc dans un msgbox qui me
donne les numéros manquants ?
Merci beaucoup
Patrick






Avatar
Jean-François Aubert
Salut Patrick,

- Première colonne, les num de début de série
- Deuxième colonne, les num de fin de série
- Les séries doivent être triées en ordre croissant
- Les données de la deuxième colonne sont à sélectionner
- Lancer la macro

Sub yy()
For Each c In Selection
If c <> c.Offset(1, -1) Then
For i = c + 1 To c.Offset(1, -1) - 1
rep = rep & i & vbLf
Next
End If
Next
MsgBox rep
End Sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Crel" a écrit dans le message de
news:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de numéros et B fin de
numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros manquants?
Patrick


"Nicolas B." a écrit dans le message de
news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N°
compris

entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y a
des trous) Est-il possible d' avoir une proc dans un msgbox qui me
donne les numéros manquants ?
Merci beaucoup
Patrick










Avatar
Nicolas B.
Modifie alors la macro comme suit (attention : les N° ne sont plus en col A
mais en col D).


Sub NoManquants()

Dim i, Début, Fin, Ligne As Long
Dim Test As Variant

Ligne = 1
While Cells(Ligne, 1) <> ""
Début = Cells(Ligne, 1)
Fin = Cells(Ligne, 2)
For i = Début To Fin
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("D:D"), 0)
If Err.Number <> 0 Then MsgBox i
Next
Ligne = Ligne + 1
Wend

End Sub


Les variables Début et Fin prennent les valeurs entrées en col A et B, puis
le test est effectué pour les valeurs entre Début et Fin.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de numéros et B fin
de numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros manquants?
Patrick


"Nicolas B." a écrit dans le
message de news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N°
compris entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y a
des trous) Est-il possible d' avoir une proc dans un msgbox qui me
donne les numéros manquants ?
Merci beaucoup
Patrick






Avatar
Match
Bonjour Nicolas et les autres.

comment modifier ta macro pour que les nombres trouvés s'inscrivent en
colonne à partir de E10 et en descendant (au lien de s'inscrire dans un
"messagebox") ?

Merci

Charles


"Nicolas B." a écrit dans le message de
news:
Modifie alors la macro comme suit (attention : les N° ne sont plus en col
A

mais en col D).


Sub NoManquants()

Dim i, Début, Fin, Ligne As Long
Dim Test As Variant

Ligne = 1
While Cells(Ligne, 1) <> ""
Début = Cells(Ligne, 1)
Fin = Cells(Ligne, 2)
For i = Début To Fin
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("D:D"), 0)
If Err.Number <> 0 Then MsgBox i
Next
Ligne = Ligne + 1
Wend

End Sub


Les variables Début et Fin prennent les valeurs entrées en col A et B,
puis

le test est effectué pour les valeurs entre Début et Fin.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de numéros et B fin
de numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros manquants?
Patrick


"Nicolas B." a écrit dans le
message de news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N°
compris entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y a
des trous) Est-il possible d' avoir une proc dans un msgbox qui me
donne les numéros manquants ?
Merci beaucoup
Patrick










Avatar
AV
M'est avis que pas besoin de macro..

Exemple :
Tes numéros en A1:A30 (peu importe l'ordre mais, évidemment, pas de doublon)
En C1:Cx les N° débutant les séries
En D1:Dx les N° finissant les séries
Exemple (C1 et D1 / C20 et D2 0 / ...etc....)
En E1 :
Ñ-C1+1-SOMMEPROD(($A$1:$A$30>Á)*($A$1:$A$30<Ñ))

Recopie --> Ex

AV
Avatar
Nicolas B.
Salut Charles,

Voilà ce que deviens alors la macro :


Sub NoManquants()

Dim i, Début, Fin, Ligne, LigneRésultat As Long
Dim Test As Variant
Ligne = 1

While Cells(Ligne, 1) <> ""
Début = Cells(Ligne, 1)
Fin = Cells(Ligne, 2)
For i = Début To Fin
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("D:D"), 0)
If Err.Number <> 0 Then
LigneRésultat = LigneRésultat + 1
Cells(LigneRésultat, 5) = i
End If
Next
Ligne = Ligne + 1
Wend

End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Match wrote:
Bonjour Nicolas et les autres.

comment modifier ta macro pour que les nombres trouvés s'inscrivent en
colonne à partir de E10 et en descendant (au lien de s'inscrire dans
un "messagebox") ?

Merci

Charles


"Nicolas B." a écrit dans le
message de news:
Modifie alors la macro comme suit (attention : les N° ne sont plus
en col A mais en col D).


Sub NoManquants()

Dim i, Début, Fin, Ligne As Long
Dim Test As Variant

Ligne = 1
While Cells(Ligne, 1) <> ""
Début = Cells(Ligne, 1)
Fin = Cells(Ligne, 2)
For i = Début To Fin
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("D:D"),
0) If Err.Number <> 0 Then MsgBox i
Next
Ligne = Ligne + 1
Wend

End Sub


Les variables Début et Fin prennent les valeurs entrées en col A et
B, puis le test est effectué pour les valeurs entre Début et Fin.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de numéros et B fin
de numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros manquants?
Patrick


"Nicolas B." a écrit dans le
message de news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants dans tous les N°
compris entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i, Range("A:A"), 0)
If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais qui arrive de
manière aléatoire.(Ces tickets sont supposés se suivre, mais il y
a des trous) Est-il possible d' avoir une proc dans un msgbox qui
me donne les numéros manquants ?
Merci beaucoup
Patrick










Avatar
Crel
Effectivement cette soluce est élégante.
Mille merci
Patrick

"AV" a écrit dans le message de news:
bo9u91$o7$
M'est avis que pas besoin de macro..

Exemple :
Tes numéros en A1:A30 (peu importe l'ordre mais, évidemment, pas de
doublon)

En C1:Cx les N° débutant les séries
En D1:Dx les N° finissant les séries
Exemple (C1 et D1 / C20 et D2 0 / ...etc....)
En E1 :
Ñ-C1+1-SOMMEPROD(($A$1:$A$30>Á)*($A$1:$A$30<Ñ))

Recopie --> Ex

AV




Avatar
Patrick
Merci beaucoup Jean-François
Ta soluce est vraiment très bien.
Patrick

-----Message d'origine-----
Salut Patrick,

- Première colonne, les num de début de série
- Deuxième colonne, les num de fin de série
- Les séries doivent être triées en ordre croissant
- Les données de la deuxième colonne sont à sélectionner
- Lancer la macro

Sub yy()
For Each c In Selection
If c <> c.Offset(1, -1) Then
For i = c + 1 To c.Offset(1, -1) - 1
rep = rep & i & vbLf
Next
End If
Next
MsgBox rep
End Sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Crel" a écrit dans
le message de

news:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de
numéros et B fin de


numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros
manquants?


Patrick


"Nicolas B." a écrit
dans le message de


news: eGjk$
Salut Patrick,

La procédure ci-dessous recherche les N° manquants
dans tous les N°



compris
entre le plus petit et le plus grand de la liste :

Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range
("A:A"))



Maxi = Application.WorksheetFunction.Max(Range
("A:A"))



For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i,
Range("A:A"), 0)



If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets
mais qui arrive de




manière aléatoire.(Ces tickets sont supposés se
suivre, mais il y a




des trous) Est-il possible d' avoir une proc dans
un msgbox qui me




donne les numéros manquants ?
Merci beaucoup
Patrick









.






Avatar
Patrick
Merci encore Nicolas
Patrick

-----Message d'origine-----
Modifie alors la macro comme suit (attention : les N° ne
sont plus en col A

mais en col D).


Sub NoManquants()

Dim i, Début, Fin, Ligne As Long
Dim Test As Variant

Ligne = 1
While Cells(Ligne, 1) <> ""
Début = Cells(Ligne, 1)
Fin = Cells(Ligne, 2)
For i = Début To Fin
On Error Resume Next
Test = Application.WorksheetFunction.Match(i,
Range("D:D"), 0)

If Err.Number <> 0 Then MsgBox i
Next
Ligne = Ligne + 1
Wend

End Sub


Les variables Début et Fin prennent les valeurs entrées
en col A et B, puis

le test est effectué pour les valeurs entre Début et Fin.


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Merci beaucoup Nicolas, c'est parfait.
Une autre question si tu permets ?
Pour un autre cas si j'ai des séries, en A début de
numéros et B fin


de numéros
ex: 5 à 12 Puis 17 à 23 etc.
Comment pourrais-je faire comprendre les numéros
manquants?


Patrick


"Nicolas B." a écrit
dans le


message de news:
eGjk$


Salut Patrick,

La procédure ci-dessous recherche les N° manquants
dans tous les N°



compris entre le plus petit et le plus grand de la
liste :




Sub NoManquants()
Dim Mini, Maxi, i As Long
Dim Test As Variant
Mini = Application.WorksheetFunction.Min(Range("A:A"))
Maxi = Application.WorksheetFunction.Max(Range("A:A"))
For i = Mini To Maxi
On Error Resume Next
Test = Application.WorksheetFunction.Match(i,
Range("A:A"), 0)



If Err.Number <> 0 Then MsgBox i
Next
End Sub


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Crel wrote:
Bonsoir à toutes et tous
J'ai dans une colonne A des numéros de tickets mais
qui arrive de




manière aléatoire.(Ces tickets sont supposés se
suivre, mais il y a




des trous) Est-il possible d' avoir une proc dans un
msgbox qui me




donne les numéros manquants ?
Merci beaucoup
Patrick





.






1 2