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 :

Boucle for each


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Diecteur médico-social
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Diecteur médico-social

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut Boucle for each
    bonsoir, je souhaite savoir pourquoi à chaque fois que je saisis une boucle "for each....next" dans une routine, une fenêtre s'ouvre pour me dire "Erreur de compilation : Next sans for" alors que je mets bien "for each..." avant.
    y a t il une solution pour exécuter cette routine ?
    merci d'avance
    jmd61

  2. #2
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    pour mieux comprendre et voir ce qui ne va pas donner un exemple de code svp

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Ce cas arrive souvent quand dans la boucle il y a une condition If ... Then et pas de End If :
    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
     
    Sub Test()
     
        Dim plage As Range
        Dim Cel As Range
        Dim quelque_chose
        '...
        '...
     
        For Each Cel In plage
     
            If quelque_chose Then
                '...
            'ici pas de End If donc erreur !
     
        Next Cel
     
    End Sub
    Hervé.

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour Theze,

    Avec un Each, c'est juste Next et non Next cel de plus le Each sert a structurer une collection (ici les celulles de ta plage) donc plage.cells et non juste le Range plage

    Je n'ai pas tester mais ça devrait t'aider quand même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
     
        Dim plage As Range
        Dim Cel As Range
     
        For Each Cel In plage.Cells 
            'ton code 
        Next
     
    End Sub
    Antony

  5. #5
    Candidat au Club
    Homme Profil pro
    Diecteur médico-social
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Diecteur médico-social

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut
    bonsoir et merci_ à tous de vos réponse
    effectivement j'avais une condition if...then sans end if
    mais je vais regarder avec attention vos réponses pour continuer à ncomprendre
    merci bcp
    jmd61

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Pour antonysansh,

    Avec un Each, c'est juste Next et non Next cel
    Tu peux tout à fait mettre Next Cel comme dans une boucle compteur For Next, ou ne pas le mettre, au choix et pour les deux type de boucle ! Le fait de préciser peut rendre le code plus clair surtout quand il y a plusieurs boucles imbriquées.

    de plus le Each sert a structurer une collection (ici les celulles de ta plage) donc plage.cells et non juste le Range plage
    A partir du moment où ta variable est un Range, la boucle For Each parcours tous les objets de ton Range qui est composé exclusivement d'une ou plusieurs cellules ou plages de cellules et je te rappelle que pour l'objet Range, la propriété par défaut est Cells et donc, il n'est absolument pas nécessaire de préciser !

    Pour ton enrichissement personnel, teste ce bout de code :

    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
     
    Sub Test()
     
        Dim plage As Range
        Dim Cel As Range
     
        'sur colonne A à partir de A1
        With Worksheets("Feuil1")
     
            Set plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        For Each Cel In plage
     
            Debug.Print Cel.Value
     
        Next Cel
     
    End Sub
    Alors, avant d'être aussi affirmatif, tu teste pour être sûr de ce que tu avance. Pense-tu que j'en suis à mes premières lignes de code ?

    Hervé.

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

Discussions similaires

  1. boucle for each
    Par jadey dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/08/2006, 21h50
  2. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 16h47
  3. aide vba boucle for each paramétrée en range
    Par gotlieb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/07/2006, 09h55
  4. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 17h38
  5. Boucle For each
    Par roots_man dans le forum ASP
    Réponses: 10
    Dernier message: 18/02/2005, 10h55

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