Signaler

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

Posez votre question NLAH 125Messages postés lundi 9 septembre 2013Date d'inscription 13 juin 2017 Dernière intervention - Dernière réponse le 8 janv. 2017 à 08:01 par 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




Afficher la suite 
Utile
+0
plus moins
Tu n'expliques pas ce que tu attends de ton code.
Tu ne peux pas ajouter un "next" pour passer à l'itération suivante.
Donnez votre avis
Utile
+0
plus moins
vous trouvez ci joint un fichier excel qui explique clairement mon besoin:
http://www.cjoint.com/c/GAguoDYJMsv
yg_be 2550Messages postés lundi 9 juin 2008Date d'inscription 23 juin 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
Répondre
NLAH 125Messages 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.
Répondre
yg_be 2550Messages postés lundi 9 juin 2008Date d'inscription 23 juin 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
Répondre
yg_be 2550Messages postés lundi 9 juin 2008Date d'inscription 23 juin 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
Répondre
NLAH- 8 janv. 2017 à 08:01
je vous remercie pour votre aide , ça marche aussi :)
Répondre
Donnez votre avis
Utile
+0
plus moins
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.  :)
NLAH- 8 janv. 2017 à 08:00
Bonjour albkan,
Je vous remercie ça marche très bien :)
Répondre
Donnez votre avis
Utile
+0
plus moins
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. :)
 
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !