Effectuer un Next à l'intérieur d'un test if [Résolu]

NLAH 125 Messages postés lundi 9 septembre 2013Date d'inscription 13 juin 2017 Dernière intervention - 6 janv. 2017 à 20:10 - Dernière réponse :  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




Afficher la suite 
125Messages postés lundi 9 septembre 2013Date d'inscription 13 juin 2017 Dernière intervention

12 réponses

Répondre au sujet
yg_be 4130 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 6 janv. 2017 à 21:08
0
Utile
Tu n'expliques pas ce que tu attends de ton code.
Tu ne peux pas ajouter un "next" pour passer à l'itération suivante.
Commenter la réponse de yg_be
NLAH 125 Messages postés lundi 9 septembre 2013Date d'inscription 13 juin 2017 Dernière intervention - 6 janv. 2017 à 21:16
0
Utile
7
vous trouvez ci joint un fichier excel qui explique clairement mon besoin:
http://www.cjoint.com/c/GAguoDYJMsv
yg_be 4130 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 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
NLAH 125 Messages postés lundi 9 septembre 2013Date d'inscription 13 juin 2017 Dernière intervention - 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.
yg_be 4130 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 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
yg_be 4130 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 7 janv. 2017 à 09:53
J'ai supposé que, quand tu changeais de colonne, tu voulais recommencer tout en bas. C'est juste, ou bien tu veux te déplacer vers la gauche sans descendre ni monter (alors supprime la ligne 22 ci-dessous)? Si tu veux te déplacer vers la gauche et monter d'une ligne, remplace la ligne 22 par
L = L - 1
.
Sub mmm()
Dim k As Integer, L As Integer, cmp As Integer
Dim finik As Boolean

cmp = 5
k = 11
L = 13
Do While k >= 6
    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) 'on décale la colonne en fonction de Cells(L, 2)
        L = 13 'on recommence en bas
    Else
        k = k - 1 'colonne précédente
        L = 13 'on recommence en bas
    End If
Loop 'Do While k >= 6
End Sub
je vous remercie pour votre aide , ça marche aussi :)
Commenter la réponse de NLAH
Utilisateur anonyme - 7 janv. 2017 à 00:30
0
Utile
1
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 albkan,
Je vous remercie ça marche très bien :)
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 7 janv. 2017 à 17:28
0
Utile
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. :)
 
Commenter la réponse de Utilisateur anonyme