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 :

VBA: Boucle multi critere [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut VBA: Boucle multi critere
    Bonjour,

    je souhaite créer une boucle qui s’arrêterait lorsque plusieurs conditions ne seront plus respectées. J'ai donc écrit cela mais ma boucle s’arrête des que seulement une des conditions n'est plus respectées :

    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
    Dim cpt, cpt2 As Integer
    Dim cpt3 As Long
    Dim cat As String
    Dim statut As String 
    dim ccde as Workbook
     
    Set ccde = Workbooks.Open(Filename:="C:\Users\kguesmia\Documents\Casse du Havre\Carnet de cde.xls")
     
      cpt3 = 8
     
    With ccde.Sheets("Feuil1")
     
        Do While .Range("C" & cpt3).Value <> cat And .Range("F" & cpt).Value <> cnuf And .Range("D" & cpt).Value <> base And .Range("A" & cpt).Value <> statut
     
        cpt3 = cpt3 + 1
     
        Loop
     
    End With
    Pourriez-vous m'aider svp.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    avant d'aller plus loin, n'as-tu pas déjà une erreur dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ......Range("C" & cpt3).Value <> cat And .Range("F" & cpt)....
    cpt3 => cpt
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    non, c'est juste une mauvaise retranscription, désolé. C'est bien cpt3 partout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     cpt3 = 8
        Do .Range("C" & cpt3).Value <> cat And .Range("F" & cpt3).Value <> cnuf And .Range("D" & cpt3).Value <> base And .Range("A" & cpt3).Value <> statut
        cpt3 = cpt3 + 1
        Loop
    Ceci étant, j'ai beau enregistrer ma macro avec la variable cpt3 dans toutes mes conditions mais les cpt réapparaissent dans certaines d'unes après exécution du code.....

    casefayere, vous n'avez pas une petite idée ou une façon de coder cela différemment ?

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Essaie en remplacant AND par OR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     cpt3 = 8
        Do .Range("C" & cpt3).Value <> cat And .Range("F" & cpt3).Value <> cnuf And .Range("D" & cpt3).Value <> base And .Range("A" & cpt3).Value <> statut
     
        Loop

  5. #5
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    si remplace par "OR" ma boucle va s’arrêter des que l'une des conditions ne sera plus respectée mais moi je veux qu'elle s’arrête quand toutes les conditions ne sont plus respectées sur une même ligne.

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par kimou75 Voir le message
    si remplace par "OR" ma boucle va s’arrêter des que l'une des conditions ne sera plus respectée mais moi je veux qu'elle s’arrête quand toutes les conditions ne sont plus respectées sur une même ligne.
    Ca ne fonctionne pas avec "AND"
    Alors essaie avec "OR" .

    "AND" est exclusif
    "OR" est inclusif

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    ou, si tu es sur du "And", une boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim x As Long
    cpt3 = 8
    For x = 1 To .Range("C" & .Rows.Count).End(xlUp).Row 'à toi de mettre la bonne référence
      If .Range("C" & cpt3).Value <> cat And .Range("F" & cpt).Value <> cnuf And .Range("D" & cpt).Value <> Base And .Range("A" & cpt).Value <> statut Then
     cpt3 = cpt3 + 1
      End If
    Next
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    as-tu vu ma dernière réponse ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/02/2014, 04h13
  2. [AC-2000] Recherche multi-criteres VBA
    Par stan057 dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2009, 03h43
  3. Réponses: 7
    Dernier message: 15/04/2007, 17h53
  4. Multi-critere et edition de table (VBA)
    Par Krombacher45 dans le forum Access
    Réponses: 2
    Dernier message: 26/07/2006, 16h26
  5. Réponses: 14
    Dernier message: 15/06/2005, 13h14

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