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 :

utilisation de boucle for each


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 18
    Par défaut utilisation de boucle for each
    bonjour,

    je voudrais remplir un tableau en parcourant chacune des cellules avec la boucle for each.
    je butte sur le message "erreur d'exécution 1004 la méthode 'range' de l'objet '_global a échoué"

    je n'arrive pas à identifier d'où ça vient.

    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
    Sub remplissage_tu()
    'remplissage des temps unitaire
     
    Dim plage_tu As Range
    Dim cell_tu
    Dim op As String
    Dim type_chassis As String
    Dim La As Integer
    Dim Ca As Integer
    Dim L As Integer
     
     
    Worksheets("charge").Activate
    ligne = Sheets("charge").Range("L65536").End(xlUp).Row 'nombre de ligne non vide du tableau
    L = ligne
    Set plage_tu = Sheets("charge").Range(Cells(6, 17), Cells(L, 23)) 'plage à parcourir
    For Each cell_tu In Range("plage_tu").Cells
    Ca = cell_tu.Column
    La = cell_tu.Row
    op = Application.Intersect(Columns("Ca:Ca"), Range("nom_op")).Value
    type_chassis = Application.Intersect(Rows("La:La"), Range("nom_gamme")).Value
    cell_tu = temps_unitaire(op, type_chassis) 'appel à la fonction temps_unitaire
    Next cell_tu
    End Sub
    l'exécution s'arrête au niveau la ligne:
    For Each cell_tu In Range("plage_tu").Cells
    et affiche le message ci dessus

    Merci de vos conseils éclairés

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,
    ta syntaxe est mauvaise car tu ne dois pas utiliser de quotes.

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each cell_tu In plage_tu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 18
    Par défaut réponse à Gotzela
    OK merci, mon code modifié
    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
    27
    28
     
    Sub remplissage_tu()
    'remplissage des temps unitaire
     
    Dim plage_tu As Range, colonne_active As Range, ligne_active As Range
    Dim cell_tu
    Dim op As String
    Dim type_chassis As String
    Dim La As Integer
    Dim Ca As Integer
     
     
    Worksheets("charge").Activate
    ligne = Sheets("charge").Range("L65536").End(xlUp).Row 'nombre de ligne non vide du tableau
    L = ligne
     
        Set plage_tu = Sheets("charge").Range(Cells(6, 17), Cells(L, 23)) 'plage à parcourir
        For Each cell_tu In plage_tu.Cells
        Ca = cell_tu.Column
        La = cell_tu.Row
        Set colonne_active = Columns("Ca:Ca")
        Set ligne_active = Rows("La:La")
        op = Application.Intersect(colonne_active, Range("nom_op")).Value
        type_chassis = Application.Intersect(ligne_active, Range("nom_gamme")).Value
        cell_tu = temps_unitaire(op, type_chassis) 'appel à la fonction temps_unitaire
     
    Next cell_tu
    End Sub
    maintenant j'ai une autre erreur à la ligne
    Set ligne_active = Rows("La:La")

    c'est bizarre, l'exécution ne signale pas d'erreur à la ligne au dessus
    Set colonne_active = Columns("Ca:Ca")

    une idée ? (je débute)

  4. #4
    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 mrah1 et leforum
    Waf
    le nez plongé dans le code et on oublie de prendre du recul!
    Ligne "La" ??? c'est quel nombre "La" ?
    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 18
    Par défaut salut Gorfael
    la variable "La" prend la valeur
    La = cell_tu.Row
    je voudrait que ça prenne le numéro de la ligne "active".
    Je ne vois pas l'erreur...

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par mrah1 Voir le message
    la variable "La" prend la valeur
    La = cell_tu.Row
    je voudrait que ça prenne le numéro de la ligne "active".
    Je ne vois pas l'erreur...
    Re,
    dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set ligne_active = La
    puisque La = cell_tu.Row.
    Logique, non ??

  7. #7
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Par défaut
    La syntaxe est:


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

Discussions similaires

  1. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  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, 15h47
  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, 08h55
  4. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h38
  5. Boucle For each
    Par roots_man dans le forum ASP
    Réponses: 10
    Dernier message: 18/02/2005, 09h55

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