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

Résolu
NLAH Messages postés 135 Statut Membre -  
 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.
 
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

  1. 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.
    0
  2. NLAH Messages postés 135 Statut Membre 2
     
    vous trouvez ci joint un fichier excel qui explique clairement mon besoin:
    https://www.cjoint.com/c/GAguoDYJMsv
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      où est l'explication?
      0
    2. NLAH Messages postés 135 Statut Membre 2
       
      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
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    4. NLAH Messages postés 135 Statut Membre 2
       
      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
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. Utilisateur anonyme
     
    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
    1. NLAH
       
      Bonjour albkan,
      Je vous remercie ça marche très bien :)
      0
  4. Utilisateur anonyme
     
    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