Effectuer un Next à l'intérieur d'un test if
Résolu
NLAH
Messages postés
135
Statut
Membre
-
NLAH -
NLAH -
Bonjour,
J'ai besoin d'incrémenter mon incrément de ma boucle for, à l'intérieur d'un test if
est ce que c'est possible??
voila mon code mais il ne me revient pas le résultat souhaité :s c'est pour cela j'ai pensé à ajouter un Next k à l’intérieur de test if.
J'ai besoin d'incrémenter mon incrément de ma boucle for, à l'intérieur d'un test if
est ce que c'est possible??
voila mon code mais il ne me revient pas le résultat souhaité :s c'est pour cela j'ai pensé à ajouter un Next k à l’intérieur de test if.
For k = 11 To 6 Step -1 For L = 13 To 10 Step -1 cmp = 5 If Cells(L, k).Value <> Cells(L - 1, k).Value Then Cells(3, cmp) = Cells(L, 5) k = k - Cells(L, 2) L = L - 1 cmp = cmp + 1 Else L = L - 1 End If Next L Next k
4 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
Tu n'expliques pas ce que tu attends de ton code.
Tu ne peux pas ajouter un "next" pour passer à l'itération suivante. -
vous trouvez ci joint un fichier excel qui explique clairement mon besoin:
https://www.cjoint.com/c/GAguoDYJMsv-
-
je souhaite tout d'abords:
- balayer la colonne k , ligne par ligne , une fois je trouver la valeur d'une ligne est différente
de la ligne suivante: la valeur de la variable k deviendra k - Cells(L, 2), alors que dans mon code la variable K ne varie pas de cette manière. c'est pour cela je trouve pas le résultat souhaité -
Tu n'as pas expliqué le résultat souhaité.
Tu n'as pas expliqué ce que tu attendais après que tu aies détecté que la valeur était différente : tu veux immédiatement recommencer toute la comparaison pour la nouvelle colonne k?
A quoi sert la variable cmp?
Suggestion:Sub mmm() Dim k As Integer, L As Integer, cmp As Integer Dim finik As Boolean k = 11 Do While k >= 6 L = 13 finik = False Do While (L >= 10) And Not finik cmp = 5 If Cells(L, k).Value <> Cells(L - 1, k).Value Then Cells(3, cmp) = Cells(L, 5) finik = True cmp = cmp + 1 ' ceci ne sert à rien! End If L = L - 1 Loop ' Do While (L >= 10) and not finik If finik Then k = k - Cells(L, 2) Else k = k - 1 End If Loop 'Do While k >= 6 End Sub -
normalement ce que je souhaite afficher à la fin de ce code est la valeur 2(cells(3,4) et la valeur 1 (cells (3,5)(mon code m'affiche que la valeur 2 c'est ça mon problème) .
j'ai utilisé cmp pour la raison suivante: une fois la condition ''If Cells(L, k).Value <> Cells(L - 1, k).Value '' est vérifié je dois récupérer à chaque fois la valeur Cells(L, 5) dans la ligne 3, et la variable cmp me permet de me déplacer d'une colonne à une autre. -
ainsi?
Sub mmm() Dim k As Integer, L As Integer, cmp As Integer Dim finik As Boolean cmp = 5 k = 11 Do While k >= 6 L = 13 finik = False Do While (L >= 10) And Not finik If Cells(L, k).Value <> Cells(L - 1, k).Value Then Cells(3, cmp) = Cells(L, 5) finik = True cmp = cmp + 1 Else L = L - 1 End If Loop ' Do While (L >= 10) and not finik If finik Then k = k - Cells(L, 2) Else k = k - 1 End If Loop 'Do While k >= 6 End Sub
-
-
Bonjour NLAH,
Je te retourne ton fichier Excel 2007 modifié.
Dis-moi ce que tu en penses, et si ça te convient.
Tu peux me demander une adaptation si besoin.
Cordialement. :) -
Bonjour NLAH,
Je mets ici directement ton code VBA corrigé :Option Explicit Sub mmm() Dim k As Integer, L As Integer, cmp As Byte For k = 11 To 6 Step -1 cmp = 5 For L = 13 To 10 Step -1 If Cells(L, k) <> Cells(L - 1, k) Then Cells(3, cmp) = Cells(L, 5) k = k - Cells(L, 2) cmp = cmp + 1 End If Next L Next k End Sub
Le code étant très court, tu pourras très facilement
voir les modifications que j'ai faites.
Dis-moi ce que tu en penses, et si ça te convient.
Tu peux me demander une adaptation si besoin.
Cordialement. :)