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 qui ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Boucle For Each qui ne fonctionne pas
    Bonjour,

    Je suis débutante sur VBA et j'essaie de faire une macro.

    Je travaille actuellement sur une macro faisant une boucle dans un classeur excel qui va copier les valeurs de l'onglet et elle doit me répéter cette action sur chaque onglet présent dans le classeur et pour cela j'utilise la boucle For Each.

    Or la boucle ne fonctionne pas car elle ne passe pas à l'onglet suivant une fois l'action terminée et je n'arrive pas à comprendre pourquoi.

    Pouvez - vous m'aider ? code - ci dessous

    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
    Sub Liaison()
     
    Dim Onglet As Worksheet
     
    For Each Onglet In Worksheets
     
    ' permet de rompre les liaisons du fichier excel
     
     ActiveSheet.Outline.ShowLevels RowLevels:=3
        Cells.Select
        Range("C2").Activate
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        ActiveSheet.Outline.ShowLevels RowLevels:=1
     
    Next Onglet
     
     
    End Sub

    Merci de votre aide

    Cordialement

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    qui va copier les valeurs de l'onglet
    Où doit-elle copier ces valeurs ?

    Voici une partie de la macro.
    Pour la ligne PasteSpecial, il faudrait avoir la réponse à la question que j'ai posée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Liaison()
     
    Dim Onglet As Worksheet
     
    For Each Onglet In Worksheets
        Onglet.Outline.ShowLevels RowLevels:=3
        Onglet.Range("C2").Copy
     
     
        Onglet.Outline.ShowLevels RowLevels:=1
    Next Onglet
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 665
    Points : 5 803
    Points
    5 803
    Par défaut
    Or la boucle ne fonctionne pas car elle ne passe pas à l'onglet suivant une fois l'action terminée et je n'arrive pas à comprendre pourquoi.
    La boucle passe bien à l'onglet suivant mais tu ne l'utilise pas dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Outline.ShowLevels RowLevels:=3
    Le changement de la feuille dans ta variable de boucle de boucle ne la rend pas active pour autant, plutôt que activesheet utilise donc ta variable de boucle

    Sans précision, ce code sélectionne les cellules de la feuille active, précise lui donc que tu veux le faire sur feuille Onglet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Liaison()
     
    Dim Onglet As Worksheet
     
    For Each Onglet In Worksheets
        Onglet.Outline.ShowLevels RowLevels:=3
        Onglet.cells.Copy
        Onglet.cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
        Onglet.Outline.ShowLevels RowLevels:=1
    Next Onglet
    end sub

  4. #4
    Membre à l'essai
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    les données doivent être copiées dans le même onglet. Je souhaite rompre les liaisons.


    Merci pour votre aide, les modifications fonctionnent parfaitement

    Cordialement

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

Discussions similaires

  1. [XL-2010] Boucle For each qui ne s'arrête pas
    Par Gllou06 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/02/2017, 11h10
  2. SSIS Boucle For Loop qui ne tourne pas
    Par baime dans le forum SSIS
    Réponses: 2
    Dernier message: 17/01/2014, 15h50
  3. [AC-2003] Boucle for each qui parcourt une liste
    Par caesar23 dans le forum IHM
    Réponses: 2
    Dernier message: 10/06/2010, 14h48
  4. boucle if-then qui ne fonctionne pas
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/09/2007, 16h24
  5. un For Each qui ne fonctionne pas avec une collection maison !
    Par grenouillesiverte dans le forum Windows Forms
    Réponses: 7
    Dernier message: 01/09/2007, 21h00

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