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-E] erreur boucle for each


Sujet :

Macros et VBA Excel

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut [VBA-E] erreur boucle for each
    Bonjour

    j'essais de faire une simple boucle sous vba excel (que je découvre) et je tombe déjà sur un p'tit probleme.

    mon code est censé parcourir les cellules de la colonne A jusqu'à la ligne 20 et de vérifier si la cellule est vide.Si elle l'est il la colorie.

    y'a quelque chose qui coince


    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
    25
    26
     
    Sub brangvide()
     
    Dim fin_list As Variant
    Dim i As Variant
     
    fin_list = 20
    i = 1
     
    For Each i In Range("A" & i)
     
    If i = fin_list Then
    Exit For
    Else
    If Range("A" & i) = "" Then
    Range("A" & i).Select
    With Selection.Interior
        .ColorIndex = 50
        .Pattern = xlSolid
    End With
    End If
    End If
     
    i = i + 1
    Next
    end sub
    et la il me met "la méthode range de l'objet '_global' a échouée"

    Si quelqu'un peut m'aider...

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    dans ta boucle if, il faut que tu rajoute .value dans ton test pour tester la valeur de la cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("A" & i).value = "" Then
    A+

  3. #3
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    toujours la meme erreur

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    For Each i In Range("A1:A" & i)

    d'autrepart range dépend d'un worksheet
    qui dépend d'un worbook
    soit tu donnes une adresse complète soit par exemple
    ActiveSheet.Range("A1A" & i)
    Elle est pas belle la vie ?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux tester cette synthaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim fin_list As Integer, i As Integer
     
    fin_list = 20
     
    For i = 1 To fin_list
        If Range("A" & i) = "" Then
            With Range("A" & i).Interior
            .ColorIndex = 50
            .Pattern = xlSolid
            End With
        End If
    Next i


    bon apres midi
    michel

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Le problème vient de l'utilisation du For Each. Comme tu le fais un For Next ordinaire ferait tout aussi bien. For Each convient pour les objets d'une collection ou d'un groupe défini d'objets. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Cellule As Range, Plage As Range
    Set Plage = Range("A1:A8")
    For Each Cellule In Plage
        If VarType(Cellule.Value) = vbDate Then
            Cellule.Interior.Color = vbYellow
        End If
    Next
    Ce code vérifie si le contenu des cellules d'une plage est une date. Si oui, la cellule est colorée en jaune.

  7. #7
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    oui effectivement le for to next est bien mieux approprié ! ça marche très bien merci beaucoup à vous tous !

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

Discussions similaires

  1. [VBA-E] Macro boucle for (erreur 424)
    Par vanexq dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/09/2010, 13h58
  2. Boucle For each en VBA
    Par boby87000 dans le forum Général VBA
    Réponses: 3
    Dernier message: 01/09/2010, 11h53
  3. [XL-2003] Erreur 1004 sur boucle For each
    Par JonSnow dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/04/2010, 13h22
  4. [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, 15h47
  5. 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, 08h55

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