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 :

Ouverture d'une macro dans un autre classeur et retour. [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut Ouverture d'une macro dans un autre classeur et retour.
    Bonjour et merci déjà d'avoir pris le temp de lire ce message.
    Je suis novice en programmation VBA et j'ai un classeur(1) pour gérer du matériel "bon état" et "mauvais état" après réparation, et j'aurais voulu à partir d'un USERFORM(A) existant ouvrir un autre classeur(2) avec ouverture d'un autre USERFORM(B) au démarrage (jusqu'ici je sais faire ) .Mais tout ce complique quand je ferme le USERFORM(B) ,par une commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Unload USERFORM(B)
    ActiveWorkbook.Save
    'Workbooks("classeur(2).xls").Close
    je souhaiterai si possible reprendre ma macro d'origine juste après l'appel à l'ouverture du classeur(2) pour revenir au USERFORM(A) ou si cela n'est pas possible ouvrir une autre macro (X) dans le Module13 du classeur(1) pour relancer mon USERFORM(A) .
    J'ai essayé la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "classueur(1).xls!Module13.X
    mais sans succès .
    Je sèche .
    Je ne peut pas mettre un exemple de fichier car il est trop volumineux.
    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Bonjour
    Voir le tuto de Silkyroad : ICI

    Comment se nomme ton classeur1, y-a-t-il des espaces?

    car si espace, il faut mettre des apostrophes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'classeur num 1.xls'!Module13.X"
    si pas d'espace pas de '

    Sinon il faut également que ton classeur soit déjà ouvert, pour appeler ta macro.

    Tu peux le faire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Worbk As Workbook  
    Set Worbk = Workbooks("Mon classeur.xls")  
    On Error GoTo erreur  
         Workbooks.Open "R:\Blabla\\Mon classeur.xls"  
         Application.Run ("'Mon classeur.xls'!test")     '----> attention apostrophe car espace dans nom du fichier
         exit sub
    erreur:  
    MsgBox "le classeur " & Worbk & "est inexistant dans le dossier indiqué", vbCritical

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Merci beaucoup,
    cela ma résolu un problème (le nom de mon fichier avait des espace).
    Mais je me posais une question .
    Peu t on avec un bouton "ouvrir" dans un USERFORM(A) d'un classeur(1), lancer par l'intermédiaire d'une MACRO(X) qui vient tester des conditions un USERFORM(B) contenu dans un autre classeur(2) et une fois que l'on a fini de se servir du USERFORM(B) avec un bouton "quitter" fermer le classeur(2) et revenir terminer la MACRO(X) du classeur(1).
    J'espère avoir été clair.
    car lorsque je lance la macro de mon classeur(1) dans mon classeur(2) avec ma fonction run tout ce passe bien sauf au moment ou je demande de fermer mon classeur(2) ou la je sort de ma macro et me retrouve dans le classeur (alors que le but est que les gens n'accède pas au classeur juste au USERFORM).
    Mais encore merci pour le tuto et l'astuce de l'apostrophe .
    j'apprend doucement mais surement.

  4. #4
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Je suis sur ton affaire de retour sur le classeurA pour finir la macro.....

    Pour l'instant, je ne sais pas si tu avais réussi mais voice comment passer d'un Usf à un autre en fermant par la suite le classeur:

    Dans le classeurA:
    code de usf, bouton click "ouvrir usf":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub CommandButton1_Click()
     
     Application.Run "Classeur2.xlsm!AfficheUserForm2"
     
     ' si ton classeur2 est fermé alors il faut mettre le chemin entier
     'Application.Run "'C:\Users\seb\Desktop\Classeur2.xlsm'!AfficheUserForm2"
     
    End Sub
    Code du module classeur A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub Ta macro
    'début de ta macro
    'ouverture de usfA
    UserFormA.Show 
    'fin de ta macro
    End sub
    Dans ton Classeur B:
    bouton "quitter" du l'usfB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton2_Click()
    ThisWorkbook.Save 'enregistrement classeur
    Unload Me 'fermeture usf
    ThisWorkbook.Close True 'fermeture classeur
    End Sub
    dans le module du classeurB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub AfficheUserForm2()
     UserForm2.Show
     End Sub
    Voilà pour l'instant et reviendrai pour le retour dans la procedure du classeurA après fermeture du classeurB....

    Seb

    Bon, ayant peu de connaissance dans certains domaine du VBA, j'ai ouvert un post (((ICI))) qui répondra à ta question....

    En espérant t'avoir aidé pour le mieux

    Seb

    Ps: oublies pas ce qu'il y a d'écrit dans ma signature!!!

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Merci beaucoup pour le travail effectué !!!!! je n'ai pas encore eu le temp de tester tout cela mais je comprend un peu mieux tout cela !!!
    encore merci et je ne manquerais pas de poster mes résultats (bon ou mauvais ).
    encore merci seb .
    ps:je n'oubli pas la signature.

  6. #6
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Y pas de quoi, je ne suis pas seul à t'avoir aider, indirectement beaucoup de personnes ont participé afin d'en arriver ici.... dans le VBA, mais je t'avouerai que j'ai encore beaucoup à apprendre et ce forum est là pour çà et de loin le meilleur....

    Et je les en remercie.

    N'oublies pas de mettre ton résultat en ligne cela pourra en aider bien d'autres

    Seb

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Apporter son aide à d'autres,c'est un bon moyen de trouver des sujets d'études pour améliorer ses propres compétences! Bonne initiative ��

  8. #8
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Merci rdurupt.....

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

Discussions similaires

  1. Exécuter une macro dans un autre classeur
    Par Claire IZ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2014, 20h37
  2. Réponses: 18
    Dernier message: 18/11/2013, 10h50
  3. [XL-2002] Macro pour copier une feuille dans un autre classeur
    Par JBeaunez dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2012, 21h46
  4. copie d'une macro dans un autre classeur
    Par guypilote dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2009, 17h58
  5. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34

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