IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Conditions dans Boucle For


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut Conditions dans Boucle For
    Bonjour tout le monde,

    je débute en vba et même en informatique tout court et j'aurais
    besoin d'aide en ce qui concerne un code de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    For j = 2 To 1000
     
            If (a = Cells(j, 2).Value) And (b = Cells(j, 4).Value) Then
                If (Cells(j, 6).Value <> "") Then
                    If Not (Cells(j, 6).Value = c)  Then
                    Next j
                    End If
                End If
                If (Cells(j, 6).Value <> "") Then
                    If Not (Cells(j, 7).Value = d)  Then
                    Next j
                    End If
                End If
                If (Cells(j, 6).Value <> "") Then
                    If Not (Cells(j, 8).Value = e)  Then
                    Next j
                    End If
                End If
     
             MsgBox(Cells(j, 9).Text) 
     
             Else
                Next j
          End If
    Il y a de toute évidence un problème avec la structure du code mais je ne parviens à la résoudre. J'ai essayé de remplacé le Next j par un GoTo avec une étiquette dont le code était Next j et j'ai essayé en utilisant une boucle Do while à la place du For et en mettant a la place des Next j
    j=j+1
    Loop

    mais ça ne fonctionne pas


    Merci d'avance pour votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Je m'arrête au début (je ne lis même pas plus loin ...)

    Tu as là un bloc (Boucle For...Next)
    Il commence à For et se termine à Next... et tout ce qu'il contient doit être complet ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 2 To 1000
      If (a = Cells(j, 2).Value) And (b = Cells(j, 4).Value) Then
      If (Cells(j, 6).Value <> "") Then
      If Not (Cells(j, 6).Value = c) Then
    Next j
    Ouvre donc ton aide en ligne (sur ta machine) et lis-y l'utilisation de If ...Then ... !!!
    Et applique !

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Tatayz et le forum
    Les spécifications du VBA n'admettent qu'un next par boucle, de même qu'il n'admet qu'un "End Sub" ou un "End Function"

    Ce que je lis de ta macro :
    Pour j=2 jusqu'à 1000
    si Bj = a et Dj = b alors
    si Fj n'est pas vide alors
    si Fj <> c passer à j suivant
    si Fj n'est pas vide alors
    si Gj différent de d, passer à j suivant
    si Fj n'est pas vide alors
    si Hj différent de e, passer à j suivant
    afficher la valeur de Ij
    sinon (Bj <> a ou Dj <> b), passer au j suivant

    en gros :
    Pour j=2 jusqu'à 1000
    si Bj=a ET Dj=b ET Fj=c ET Gj=d ET Hj=e alors afficher Ij

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 2 To 1000
        If Cells(j, "B") = a And Cells(j, "D") = b And _
           Cells(j, "F") = c And Cells(j, "G") = d And _
           Cells(j, "H") = e Then MsgBox Cells(j, "I")
    Next j

  4. #4
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    salut tatayz
    un conseil de base pour programmer en VBA :
    quand tu fait une boucle ou un if, écrit-la en entier dès le départ
    et écrit ensuite à l'intérieur, ça permet de ne pas mélanger les boucles
    ne pas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ... then
        for...to...
        End If
    Next
    mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ... then
        for...to...
        ...
        Next
    End If

Discussions similaires

  1. [Débutant] Comment écrire condition "if" dans boucle "for" ?
    Par PIERAN dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/12/2014, 15h34
  2. [débutant] Pb dans boucle For
    Par Sam 069 dans le forum Access
    Réponses: 2
    Dernier message: 11/09/2006, 13h10
  3. Réponses: 3
    Dernier message: 04/08/2006, 19h24
  4. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  5. [JLabel] JLabel dans boucle for
    Par clairenes dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/01/2006, 00h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo