Effectuer un Next à l'intérieur d'un test if

Résolu/Fermé
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 - Modifié par NLAH le 6/01/2017 à 20:22
 NLAH - 8 janv. 2017 à 08:01
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.
 
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




A voir également:

4 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
6 janv. 2017 à 21:08
Tu n'expliques pas ce que tu attends de ton code.
Tu ne peux pas ajouter un "next" pour passer à l'itération suivante.
0
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 2
6 janv. 2017 à 21:16
vous trouvez ci joint un fichier excel qui explique clairement mon besoin:
https://www.cjoint.com/c/GAguoDYJMsv
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
6 janv. 2017 à 21:27
où est l'explication?
0
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 2
6 janv. 2017 à 21:32
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é
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
6 janv. 2017 à 23:27
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
0
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 2
7 janv. 2017 à 00:05
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.
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
7 janv. 2017 à 00:16
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
0
Utilisateur anonyme
7 janv. 2017 à 00:30
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.  :)
0
Bonjour albkan,
Je vous remercie ça marche très bien :)
0
Utilisateur anonyme
7 janv. 2017 à 17:28
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. :)
 
0