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 :

utiliser une macro sur plusieurs fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    je cherche comment je pourrais avoir ma macro visible dans mes documents.(par exemple)
    Pour le moment, ma macro est dans un fichier excel et il faudrait donc que je l'exporte dasn mes documents non?

    Je veux affecter n'importe quel fichier excel à cette macro!
    Par exemple, je voudrais faire glisser mon fichier sur cette macro et elle s'éxécute ! C'est possible ?

    Je suis un peu perdu là,
    Si je ne me suis pas bien exprimé ou que vous avez des précisions à me demander, pas de problème
    J'utilises office 2007,
    Cordialement.

    J'espère que se sera mieux expliquer ainsi

    je souhaite placer dans un classeur "exemple.xls" (qui sera ouvert) un liste de différentes macro qui pourront agir sur d'autres classeur qui seront fermés.
    A savoir, lorsque j'ouvre "exemple.xls" et que j'execute le code "macro1" il puisse agir sur un autre classeur en l'occurence : "fichier.xls".
    Je souhaiterai pouvoir executer la macro sans avoir a ouvrir le classeur "fichier".
    merci encore

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    bonjour tlm,
    j'ai exporter mon module dans mes documents et j'obtiens donc Module2.bas.
    Est-il possible, qu'en ouvrant n'importe quel fichier excel nous intéressant dans n'importe quel répertoire, à l'ouverture, on éxecute automatiquement la macro ?
    Ou alors faut-il que tous les fichiers soient dans le même repértoire ?
    si vous avez quelques pistes, je suis preneur,
    merci de votre aide.
    cdlt

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    Les fichier .bas ne servent que pour l’import et l’export ce qui t’obligerais à créer un bout de code dans tout tes fichiers qui importerais et utiliserais tes macro, a mon avis ce n’est pas le but recherché.

    Je vois deux méthodologies pour ce que tu veux faire.

    1) Dans tes macros du fichier exemples.xls tu prévois d’ouvrir, de faire le traitement et de refermer tes fichiers.xls

    2) Comme ton fichier exemple.xls reste ouvert, les macro restent utilisable sur un classeur que tu ouvres par la suite.
    Exemple : ouvrir exemple.xls puis ouvrir fichiers.xls (qui sera le classeur actif), utiliser les macros dont tu as besoin puis refermer fichier.xls




    Pour ces deux contextes il faut définir quel seront réellement tes besoins car plus on veut ce simplifier la vie plus il faut automatiser les taches.

    Quelques idées.

    Si tu as beaucoup de macro il peut être intéressant d’avoir un menu dans lequel tu en trouves la liste (du même style que le menu Fichier avec ses sous menu)

    Prévoir des macros qui précise ou non le nom du classeur

    Prévoir la création d’une liste de tous les classeurs sur lesquels tu auras à travailler en les recherchant de manière récursive pour pouvoir en sélectionner un ou plusieurs dans une ListBox.

    Etc…

    Et pour tous ces cas en recherchant sur le site tu auras des exemples.

    Bon courage
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    bonjour zyhack,
    je te remercie pour ces informations et idées (t'as raison, du coup, je ne pense pas que mon exportation soit utile )
    Bon ben je vais chercher (encore) mais avec tes idées, j'espère trouver,
    bonne journée !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    j'ai cherché et je n'ai trouvé que ceci dans le forum (je cherche peut-être pas bien mais je trouve pas )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.dialogs.item(xlDialogOpen).show
    Je l'ai mis juste après mon public sub macro()
    Sa me permet d'aller récupérer mon fichier mais le code ne s'applique pas par la suite.
    Cdlt

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Petit code pour t'expliquer comment choisir un fichier, executer du code puis fermer et enregistrer le fichier

    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
    Sub test()
     Const type_fichier As String = "tous fichiers, *.*"
     
      'Choisir un fichier
      FichierChoisi = Application.GetOpenFilename("Fichiers Excel, *.xls")
      If FichierChoisi = "" Then Exit Sub
     
      'ouvrir le fichier
      Workbooks.Open (FichierChoisi)
     
      'traitement que tu desire faire
      Sheets(1).Range("A1") = "test2"
     
      'puis à la fin fermer et enregistrer le fichier
      ActiveWorkbook.Close savechanges:=True
    End Sub
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Merci bcp, je comprend ton code sauf la ligne ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'traitement que tu desire faire
      Sheets(1).Range("A1") = "test2"
    J'ai remplacé par call macro1 (FichierChoisi) mais il ne considère pas le fichier choisi comme un classeur.(normal, j'ai déclaré FichierChoisi en String).
    mais si je le déclare en workbook, il me met variable objet ou variable de bloc With non définie.

    merci encore pour ton temps.
    cdlt.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    La ligne que tu ne comprend pas était juste là pour mes tests il fallait effectivement la modifier par le traitement que tu désir effectuer.

    Tant que le classeur que tu as ouvert est le classeur actif tu n’as pas besoin de passer son nom en référence donc un call macro1 suffit
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    j'ai fait sa aussi, mais il ne se passe rien, sa m'ouvre uniquement mon classeur mais n'effectue pas le traitement !!

    j'ai déclarer FichierChoisi en string, sinon il me dit que la variable n'est pas définie.

    Donc ca me permet d'aller chercher le fichier comme je le souhaite,
    mais ca n'éxécute pas la macro que j'appelle !

    Cordialement.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Peux tu mettre un point d’arrêt sur la ligne de code qui appelle ta procédure et ensuite en tapant la touche F8 tu verras ce qui est exécuté dans le code ligne par ligne pour essayer de trouver ce qui cloche parce que j’ai essayé de nouveau et ça fonctionne !!!
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    alors,
    Je vais essayer de faire le plus complet possible :
    Au début, la ligne sub test est surligné en jaune, f8 :
    => Sa passe à la ligne FichierChoisi = application...
    f8 => Demande de choisir le fichier que je choisis
    => passe au la ligne if
    f8 => passe à workbooks.open (FichierChoisi)
    f8=> Ca m'ouvre une dizaine (voire plus) de page blanche dans vba et je ne passe plus à la ligne suivante donc impossible d'aller sur Call macro1.

    Voila, je ne sais pas pourquoi sa marche pas.
    Merci de ton aide, ca avance quand même .
    Cordialement.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    A mon avis il a ouvert les pages de code des feuilles du classeur que tu viens d'ouvrir, il te suffit de selectionner le module ou l'endroit ou est executé ton code et de continuer la manip.
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    ok, je te remercie beaucoup,
    ma macro1 exécute ses manips dans un nouveau classeur.
    C'est surement pour sa que ca plante !

    En tout cas, je te remercie pour tout.
    Cordialement

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Bon ben maintenant, sa marche !
    Au fait, un truc tout bête :
    Quand j'ai testé tout à l'heure, j'ai pris comme FichierChoisi le fichier actuellement ouvert donc ca ne devait pas marché.
    J'ai pris un autre fichier et la crak, ca marche nikel.

    Merci pour ton aide zyhack, c'est exactement ce que je voulais.
    Bonne continuation.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. [XL-2007] utiliser une macro sur plusieurs feuilles
    Par revans dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/06/2012, 14h20
  3. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  4. Creer un macro qui verifie une info sur plusieur fichier excel
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/07/2009, 16h42
  5. Réponses: 4
    Dernier message: 03/12/2004, 11h18

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