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 sur onglets


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
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut Boucle sur onglets
    Bonjour

    Je suis débutant en vba et je souhaiterais avoir votre aide sur 2 choses svp :

    1-Je possede environ 150 onglets (qui sont présentés de la même manière) et je dois effectuer les mêmes calculs à chaque fois (par exemple B110-B1).J'ai vu qu'une boucle for each (ou un truc dans le genre) existe mais je ne sais pas l'utiliser......

    2-Comment faire pour récupérer des résulats de plusieurs feuilles pour les mettre dans une autre feuille?
    Exemple: je recupère A1 de la feuille 1 que je mets dans B2 de la feuille 10, A1 de la feuille 2 que me mets dans B3 de la Feuille 10, A1 de la Feuille 3 que je mets dans B3 de la Feuille 10 etc...

    Merci bcp votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour récupérer dans la colonne B de la feuille 10 les valeurs des cellules A1 de chaque feuille, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim NoLigne as long, LaFeuille as worksheet
    NoLigne = 1
    For each LaFeuille in ActiveWorkbook.worksheets
         if not lcase(LaFeuille.name) = "feuil10" then
              NoLigne = NoLigne + 1
              Cells(NoLigne, 2) = LaFeuille.Cells(1, 1)
         endif
    Next
    A+

  3. #3
    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
    Si tu veux de l'aide, commence par te relire :
    - 150 onglets : sur combien de classeurs ? (sauf erreurs de ma part Excel limite à 128 le nombre d'onglets par classeurs - jusqu'à la version 2003 tout au moins)

    je recupère A1 de la feuille 1 que je mets dans B2 de la feuille 10, A1 de la feuille 2 que me mets dans B3 de la Feuille 10, A1 de la Feuille 3 que je mets dans B3 de la Feuille 10 etc

    B3 feuille 10 : A1 feuille 2 ou A1 feuille 3 ?

    Feuille 1 : c'est le nom de la feuille ou sa place dans les onglets ?
    Si on bouge les onglets , les résultats doivent-ils rester ou être réactualisé ?
    Une formule ne serait-elle pas plus simple ? (si c'est le nom des feuilles "Feuille 1", "Feuille 2", etc...

    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut
    Si tu veux de l'aide, commence par te relire :
    - 150 onglets : sur combien de classeurs ? (sauf erreurs de ma part Excel limite à 128 le nombre d'onglets par classeurs - jusqu'à la version 2003 tout au moins)
    Tu es sûr de ça ? Tu as testé ? Essaie ça, tu verras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub AjouterDesFeuilles()
    For i = 1 To 255
        Worksheets.Add
    Next
    End Sub
    + les trois feuilles déjà existantes dans le classeur, ça m'a fait 258 feuilles...
    A toutes fins utiles

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Salut,

    Gorfael j'ai bien environ 150 onglets ms je t'avoue que je ne connais pas le nombre limite.....
    Qd je disais "Feuille 1" je parlais du nom de la feuille et non de son emplacement.

    Oskel'n'or merci pour ton prog, aucune erreur n'est signalée ms je n'ai rien qui apparait dans ma feuille10.....

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Corrige la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLigne, 2).value = LaFeuille.Cells(1, 1).value
    Si tu n'as pas de donnée dans feuil10, alors c'est que tu n'as pas de donnée en A1 de toutes tes feuilles. Si tu as des données, alors montre ton code tel qu'il est.
    Tu dis

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    J'ai réécris ton code sauf que la case que je veux à chaque est la D189 et la feuille dans laquelle je souhaite récupérer les données s'appelle "Résumé"

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub recup()
     
    Dim NoLigne As Long, LaFeuille As Worksheet
     
    NoLigne = 1
    For Each LaFeuille In ActiveWorkbook.Worksheets
     If Not LCase(LaFeuille.Name) = "Résume" Then
              NoLigne = NoLigne + 1
              Cells(NoLigne, 2).Value = LaFeuille.Cells(189, 4).Value
         End If
    Next
     
    End Sub

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Corrige la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLigne, 2).value = LaFeuille.Cells(1, 1).value
    Bonjour, ce serrait pas plus tôt...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuil10").Cells(NoLigne, 2).value = LaFeuille.Cells(1, 1).value
    Et une variante pour ton poste précédant...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub addd()
    Dim e As Object
        Set e = Worksheets.Add(, , 255)
    End Sub
    A+

  9. #9
    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
    Citation Envoyé par ouskel'n'or Voir le message
    Tu es sûr de ça ? Tu as testé ? Essaie ça, tu verras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub AjouterDesFeuilles()
    For i = 1 To 255
        Worksheets.Add
    Next
    End Sub
    + les trois feuilles déjà existantes dans le classeur, ça m'a fait 258 feuilles...
    A toutes fins utiles
    Salut à tous

    ouskel'n'or : pas gentil de me mettre le nez dans le KK quand j'ai tord
    Comme j'étais persuadé de ce que j'avançais, ayant déjà eu un problème de nombre de feuilles, j'ai cherché la réponse : Nombre de feuilles maximum dépend de la mémoire disponible.. Faut croire que 256Mo n'étaient pas suffisant.
    Merci d'avoir corrigé mon erreur.

    A+

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut à tous

    ouskel'n'or : pas gentil de me mettre le nez dans le KK quand j'ai tord
    Comme j'étais persuadé de ce que j'avançais, ayant déjà eu un problème de nombre de feuilles, j'ai cherché la réponse : Nombre de feuilles maximum dépend de la mémoire disponible.. Faut croire que 256Mo n'étaient pas suffisant.
    Merci d'avoir corrigé mon erreur.

    A+
    T'en fait pas Gorfael, ouskel'n'or est un gard en or (comme la fin de son pseudo), mais il adore quand il peut un peu rigolé, je suis l'un de ses "souffre douleurs" et je ne m'en porte pas plus mal.... bien que quand ont ne le connais pas ont "Tique" un peu a nous de l'attendre au tournant...
    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Bonjour,

    Toujours concernant les boucles sur onglets, je souhaiterais faire une macro qui récupère la colonne C de tous mes onglets pour les mettre dans un autre onglet appelé Rdt.
    Exemple: la colonne C de l'onglet1 se met dans l'onglet Rdt en Colonne B
    la colonne C de l'onglet2 se met dans l'onglet Rdt en Colonne C
    la colonne C de l'onglet3 se met dans l'onglet Rdt en Colonne D
    etc

    Merci pour votre aide

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Ton avant dernier code correspond à ce que je recherche, la seule chose et que toi tu te places en A4 et tu fais l'opération (IU4-$B$3)/$B$3 alors que moi je veux me placer en D4 et faire (B4-$B$3)/$B$3.

    A+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Super c MA-GNI-FIQUE !!

    je te remercie, c super, juste une dernière question aprés j'arrête lol :

    Comment faire pr appliquer cette même macro à tous mes onglets excépté 2 ou 3 ?


    Merci Ouskel'n'or

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For each LaFeuille in ActiveWorkbook.worksheets
          'Tu exclus les feuilles "Feuiln" et "...n+1" (que tu remplaces par leurs noms)
          If not Lafeuille.name = "Feuiln" and not Lafeuille.name = "Feuiln+1" then
               'Le code précédent y compris l'instanciation de la feuille
               Set FL1 = Lafeuille
               '.............. la suite
           endif
    Next
    PS - Ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim LaFeuille as worksheet
    dans tes déclarations

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Merci beaucoup, c'est nickel !

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [XL-2003] Boucle sur onglets
    Par fanfan89 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/05/2010, 11h08
  3. [JDBC]Boucle sur tous les éléments du ResultSet
    Par Terminator dans le forum JDBC
    Réponses: 1
    Dernier message: 22/09/2005, 19h30
  4. L'installation d'XP boucle sur elle-même
    Par pf106 dans le forum Windows XP
    Réponses: 13
    Dernier message: 20/08/2005, 14h55
  5. [MFC] Boucle sur un bouton
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h37

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