OVH Cloud OVH Cloud

verifier une suite

4 réponses
Avatar
Joan Delacourt
hello,
voici la situation:
apres un export je me retrouve avec une list de champs avec des trous
cad uo peu comme ca:
1 iten1
2 item2
3 item3
5 item5
1 item1bis
2 xxx
4 xx
5 xxx
1 ddd
2 eee
La permiere colonne est un donc plusieurs suite numerique. de 1a xx et
ca repart apres.
Ainsi, j'ai des trous dans mon listing, dans mon exemple il n'y a rien
entre 3 et 5, il manque 4
Je voudrais faire un script qui verifie la premiere colonne a savoir
si le chiffre suivant est n+1 ou 1 sinon il manque une ligne. Et quil
me dise le numero de la ligne manquante.

merci d'avance.

4 réponses

Avatar
Claude Mani
Bonjour,

Pour bien comprendre :

Est-ce que :

- le chiffre de référence se situe toujours dans la plage 1 à 5 ?

- les éléments de chaque ligne se situe dans une seule case (par ex. "2
item2" dans la cellule X,X) ou s'étalent sur plusieurs colonnes ?

Bonne soirée.

Claude Mani

"Joan Delacourt" a écrit dans le
message de news:
hello,
voici la situation:
apres un export je me retrouve avec une list de champs avec des trous
cad uo peu comme ca:
1 iten1
2 item2
3 item3
5 item5
1 item1bis
2 xxx
4 xx
5 xxx
1 ddd
2 eee
La permiere colonne est un donc plusieurs suite numerique. de 1a xx et
ca repart apres.
Ainsi, j'ai des trous dans mon listing, dans mon exemple il n'y a rien
entre 3 et 5, il manque 4
Je voudrais faire un script qui verifie la premiere colonne a savoir
si le chiffre suivant est n+1 ou 1 sinon il manque une ligne. Et quil
me dise le numero de la ligne manquante.

merci d'avance.


Avatar
Joan Delacourt
bonjour,
les sequences peuvent etre entre 1 et infini.
chaque ligne est un enregistrement dont la premiere colonne est donc
un chiffre et les autres colonnes comportent differente donnees: il y
a environ 20 colonnes.
voila.

merci encore
On Tue, 8 Jul 2003 23:30:56 +0200, "Claude Mani"
wrote:

Bonjour,

Pour bien comprendre :

Est-ce que :

- le chiffre de référence se situe toujours dans la plage 1 à 5 ?

- les éléments de chaque ligne se situe dans une seule case (par ex. "2
item2" dans la cellule X,X) ou s'étalent sur plusieurs colonnes ?

Bonne soirée.

Claude Mani

"Joan Delacourt" a écrit dans le
message de news:
hello,
voici la situation:
apres un export je me retrouve avec une list de champs avec des trous
cad uo peu comme ca:
1 iten1
2 item2
3 item3
5 item5
1 item1bis
2 xxx
4 xx
5 xxx
1 ddd
2 eee
La permiere colonne est un donc plusieurs suite numerique. de 1a xx et
ca repart apres.
Ainsi, j'ai des trous dans mon listing, dans mon exemple il n'y a rien
entre 3 et 5, il manque 4
Je voudrais faire un script qui verifie la premiere colonne a savoir
si le chiffre suivant est n+1 ou 1 sinon il manque une ligne. Et quil
me dise le numero de la ligne manquante.

merci d'avance.





Avatar
Claude Mani
Bonjour, bonsoir,

Voilà une première approche.

Le programme suivant lit tous les index (dans la colonne 1, à partir de la
première ligne) et s'arrête lorsqu'une cellule vide est rencontrée (fin du
traitement). Il affiche un message (voir si c'est nécessaire) et écrit dans
la colonne 22 (const COL_MANQUE) lorsqu'un index différent de celui qui
est attendu est rencontré.

Le programme ne vérifie pas si la première information rencontrée est autre
chose qu'un index.

A vérifier si je n'ai pas oublié de cas de figure.

Bonnes suites excelliennes.

Claude Mani

Option Explicit

Public Sub verifierExistenceLigne()
Const COL_INDEX = 1
Const COL_MANQUE = 22
Dim indexActuel As Long
Dim indexPrecedent As Long
Dim indexVerif As Long
Dim ligne As Long
Dim avertissement As String

ligne = 1
indexPrecedent = 0
indexActuel = Cells(ligne, COL_INDEX).Value

Do
indexVerif = indexActuel - indexPrecedent

Select Case indexVerif
Case 1
avertissement = ""
Case Is > 1
If indexVerif = 2 Then
avertissement = "L'index " & CStr(indexPrecedent + 1) &
" manque."
Else
avertissement = CStr(indexVerif - 1) & " index
manquent."
End If
Case Is < 0
If indexActuel = 1 Then
avertissement = ""
ElseIf indexActuel = 2 Then
avertissement = "L'index 1 manque."
Else
avertissement = CStr(Abs(indexVerif) - 1) & " index
manquent."
End If
Case 0
If indexActuel <> 0 Then
avertissement = "L'index " & CStr(indexActuel) & " est
double."
Else
avertissement = ""
ligne = 0
End If
End Select

If avertissement <> "" Then
Cells(ligne, COL_MANQUE).Value = avertissement
MsgBox "Ligne " & CStr(ligne) & " : " & avertissement, vbOKOnly
+ vbInformation, "Index erroné."
avertissement = ""
End If

ligne = ligne + 1
indexPrecedent = indexActuel
indexActuel = Cells(ligne, COL_INDEX).Value
Loop While indexActuel <> 0

MsgBox "Terminé. " & CStr(ligne - 1) & " lignes parcourues.", vbOKOnly +
vbInformation, "Traitement terminé."
End Sub


"Joan Delacourt" a écrit dans le
message de news:
bonjour,
les sequences peuvent etre entre 1 et infini.
chaque ligne est un enregistrement dont la premiere colonne est donc
un chiffre et les autres colonnes comportent differente donnees: il y
a environ 20 colonnes.
voila.

merci encore
On Tue, 8 Jul 2003 23:30:56 +0200, "Claude Mani"
wrote:

Bonjour,

Pour bien comprendre :

Est-ce que :

- le chiffre de référence se situe toujours dans la plage 1 à 5 ?

- les éléments de chaque ligne se situe dans une seule case (par ex. "2
item2" dans la cellule X,X) ou s'étalent sur plusieurs colonnes ?

Bonne soirée.

Claude Mani

"Joan Delacourt" a écrit dans le
message de news:
hello,
voici la situation:
apres un export je me retrouve avec une list de champs avec des trous
cad uo peu comme ca:
1 iten1
2 item2
3 item3
5 item5
1 item1bis
2 xxx
4 xx
5 xxx
1 ddd
2 eee
La permiere colonne est un donc plusieurs suite numerique. de 1a xx et
ca repart apres.
Ainsi, j'ai des trous dans mon listing, dans mon exemple il n'y a rien
entre 3 et 5, il manque 4
Je voudrais faire un script qui verifie la premiere colonne a savoir
si le chiffre suivant est n+1 ou 1 sinon il manque une ligne. Et quil
me dise le numero de la ligne manquante.

merci d'avance.








Avatar
Joan Delacourt
merci beaucoup pour le code.
je vais l'essaye bientot.