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 :

Macro sur tous les onglets


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Macro sur tous les onglets
    Bonjour,
    J'ai une macro "générale" et un macro "spécifique" pour les onglets. Je souhaites ajouter à la fin de la macro "générale" une ligne vba qui dise que pour chaque onglet, il effectue la macro "spécifique".
    A la fin de la macro "générale", cet onglet sur lequel est appliquée la macro générale et masqué.
    J'ai essayé avec la commande "ActiveSheet.Next.Select" mais le problème c'est qu'à la fin de la macro générale, l'onglet actif et au milieu de tous les onglets. Du coup, il me fait les onglets suivants mais pas ceux du début.
    Je pense que l'idéal,est d'avoir une fonction qui lui dit de sa placer sur le premier onglet de la feuille afin qu'il exécute la macro sur tous ceux qui suivent.
    Auriez vous une idée?
    Merci d'avance.

    Yann

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Une solution est d'ajouter un paramètre à ta macro spécifique.
    Ce paramètre attendra la feuille sur laquelle doit se faire le traitement

    Sur la macro general tu appels la macro spécifique en donnant le parametre pour chaque feuille en utilisant une boucle sur la collection des classeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim sh As Worksheet
     
    For Each sh In Worksheets
     
        spécifique sh
     
    Next

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    J'ai essayé avec ce code et voici le résultat:
    En remplaçant ma macro "spécifique" par MsgBoxActiveWorkbook.Worksheets.Name" (par exemple), la macro fonctionne, m'affiche au fur et à mesure le nom de chaque onglet mais ne se déplace pas sur les onglets. Du coup, lorsque je mets ma macro, elle s’effectue sur le premier onglet, et le refait en boucle sur le même onglet (je pense qu'il le fait autant de fois qu'il y a d'onglets). Le problème est qu’Excel ne va pas sur l’onglet suivant pour effectuer la macro.
    Aurriez vous une idée ?
    Merci
    Yann

  4. #4
    Membre émérite
    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
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut yann3131 et le forum
    On peut discuter (poster) longtemps, c'est un dialogue de sourd.
    Donnes tes macros qu'on modifie le code, plutôt que donner des bouts de code en réponse à du texte.
    A+

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonjour,

    Donnes tes macros qu'on modifie le code, plutôt que donner des bouts de code en réponse à du texte.
    Ben oui,

    il y a de fortes chances vu ton énoncé que ton code soit non explicite du genre cells(x,y) = zzzz ou que tu utilises, activesheet.cells(x,y) ===zzz, comme tu boucles sur les feuilles sans les sélectionner (activer), ce qu'il ne faut d'ailleurs pas faire sauf si indispensable, tu tournes en rond sur la feuille active...

    devient plus explicite du genre sh.cells(x,y)=zzzz

    cordialement,

    Didier

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    Je comprends qu’il n’est pas facile de traiter une question sans avoir tous les éléments. En pièces jointes, il y a trois fichiers :
    - Transfert Programme de vol (extraction d’un logiciel)
    - Repartition_data
    - Mise_en_page
    Lorsque j’ouvre je fichier excel « Transfert Programme de vol », je lance la macro « Repartition_data ». Cette macro copie les lignes égale à chaque date et les dispache dans de nouveaux onglets nommés avec cette même date.
    Après, je lance la macro « Mise_en_page » sur chaque onglet. Celle-ci trie, classe fait met une mise en forme et mise en page de l’onglet (d’ailleurs très long).
    Je souhaite (en une macro si possible), que lorsque je lance la macro « Repartition_data », celle-ci me lance la macro « Mise_en_page » sur chaque onglet. Pour info, lorsque la première macro a finit, l’onglet actif et au milieu de tous les onglets.
    J’espère avoir été le plus clair possible et avoir votre aide.
    Merci d’avance.
    Yann
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2003] Une macro sur tous les onglets
    Par Maksym dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 23/01/2013, 13h28
  2. Boucler sur tous les onglets d'un fichier Excel
    Par CocoAntoine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2012, 13h08
  3. Exécuter une macro sur tous les onglets d'un fichier sauf un
    Par Marsama dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2011, 17h38
  4. [XL-2003] Exécuter une macro sur tous les fichiers d'un dossier.
    Par ahmet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/10/2009, 09h49
  5. Macro qui s'exécute sur tous les onglets
    Par idckhorne dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/05/2009, 11h56

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