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 :

VBA : ouverture d'un Userform sans passer par excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut VBA : ouverture d'un Userform sans passer par excel
    Bonjour,

    J'ai créer une interface userform sous VBA et je souhaite à présent pouvoir la lancer sans ouvrir une feuille Excel. Directement en laçant un un excutable à partir d'un répertoire sous Windows.

    Après plusieurs échec, je me demande si ce que je souhaite faire est réellement possible.

    merci pour toutes infos.

  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
    Points : 15 546
    Points
    15 546
    Par défaut
    Non, pas avec VBA.
    par contre, depuis Excel, tu peux placer une macro Workbook_Open qui minimise la fenêtre Excel et ouvre ton userform.
    Tu devrais même pouvoir faire ça depuis un bath dans Notepad avec comme paramètre d'ouverture = 1

    (je ne suis pas sûr de la commande, tu essaies...

    Dans le fichier NomFich, tu places l'ouverture de ta form en "Sub Workbook_Open()

    Jamais essayé mais je sens que tu seras un bon cobaye...

    Tu nous dis si ça marche

    A+

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Tu peux faire ça à partir d'un script VBS: tu ouvres en mode "invisible" le fichier Excel qui contient ton code et ta userform , avec, dans l'auto-open, l'affichage de ta form.
    J'ai déjà fait ça, et ça marche très bien.

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Allez, voila le code, à mettre dans un fichier texte "LancerExcel.vbs":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set obExcelApp=CreateObject("Excel.Application")
    obExcelApp.Visible = False
    obExcelApp.Workbooks.Open("C:\MonRepertoire\TestVBS.xls")
    obExcelApp.ActiveWorkbook.Close 
    obExcelApp.quit
    Et dans le code de ton fichier Excel, qui contient la form "UserForm1":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_Open()
        UserForm1.Show
    End Sub

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Megaxel : Je ne connais pas VBS et je ne savait pas qu'on pouvait faire ce genre de fichier. Où peut-on apprendre le b-a-ba de VBS?

    Pour ce qui est du UserForm ouvert de cette façon, j'imagine qu'il ne faut surtout pas oublier de fermer le fichier Excel et peut-être même Excel lui-même avec le bouton Quitter du UserForm.

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Salut, Zazaraignée!
    Pour le VBS, je ne vais pas pouvoir t'aider beaucoup, parce que ce que tu vois représente une grosse partie de ce que je sais. La seule règle théorique que je connais, c'est qu'on ne déclare pas les variables (pas de "DIM MaVariable AS Type")
    Mais en gros, tu peux mettre dans un script vbs beaucoup du code que tu mettrais dans un module. J'ai fait quelques tests, un jour (ça remonte pas mal...), et je me souviens que ça marchait bien mieux sous XP que sous NT4, sur lequel j'étais avant.
    Mais c'est surtout bien pratique quand on n'a pas VB, comme moi.
    Et je dois avouer que je n'ai pas trouvé de site qui parle précisément de VBS.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Voir la page de référence Microsoft:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/scriptinga.asp

    Et, précisément pour VBS,:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriVBScript.asp

    Voili, voilou...

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ben merci, AlainTech, je vais mettre ces liens dans un coin, en lieu sûr!

  9. #9
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Merci Alain,
    si j'ai bien compris, il faut avoir au mini VB installé pour pouvoir utiliser le VBS... ou me trompe-je ?

    A+

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha non, pas du tout. Je n'ai pas VB, et je fais du VBS.

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Le WSH (Windows Script Hosting) est présent depuis Windows 95.

    Donc, aucune excuse (n'est-ce pas ousk?) pour ne pas l'utiliser.

    Très puissant, permet la manipulation de la BDR (base de registre) même quand regedit est désactivé.

    Je l'utilise pour faire des manips sur des PC d'entreprises où la sécurité est à un très haut niveau (banque...).

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    Excel ne permet pas de créer un excutable, tu dois lancer le fichier xls, donc fait comme ouskel'n'or l'a suggérer, dans WorkBook.Open tu mets UserForm1.Show, ce qui ouvrira directement le UserForm.
    Place un raccourci de ton classeur sur le bureau, celà t'éviteras de chercher dans l'explorateur et de lancer directement ceclui-ci.

    jpleroisse

  13. #13
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Bonjour Jemigo!
    Je répond sur le forum à ton message...
    Si je met la valeur de VISIBLE à False, c'est pour que seule la UserForm s'affiche, et pas le classeur Excel. C'est plus joli...
    Ensuite, l'Auto-open, c'est bien le Workbook_Open, pas de problème. D'ailleurs, pour vérifier, lorsque tu ouvres ton classeur Excel par double click, ta Userform doit s'afficher immédiatement. Est-ce que c'est bien le cas?
    Non, ce n'est pas la peine d'enlever les dernières lignes, mais si tu les laisses, Excel se ferme lorsque tu fermes ta Userform.
    Poste le code de ce que tu as fait, pour nous aider à t'aider.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Ouvrir un Userform sans passer par Excel
    Merci d'avoir répondu.

    J'ai bien compris ton message. Mais lorsque que je lance mon fichier par l'auto open ma userform se s'affiche pas!!
    Ce fichier est une macro : "toto.xls". la userform est comprise dedans. lorsque je lance le fichier "toto".xls, un tableur excel s"ouvre. Ensuite je dois cliquez sur "excéuter la macro". De cette manière ma Userform apparait et je pe continuer l'exécution de mon programme.

    pour de ce qui est du script vbs, si je mets les deux dernière ligne ca marche pas!! excel s'ouvre et se ferme aussitot. si je mets "visible" à False rien se lance.

    Voici le code que j'ai réalisé :

    -Pour la macro "toto.xls" contenant la Userform nommé "page1". le code est écrit dans "module1" de VBA project

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub toto()
     
    'toto macro
     
    page1.Show
     
    End Sub
     
    Private Sub Workbook_Open()
        page1.Show
     
    End Sub
    script VBS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set obExcelApp=CreateObject("Excel.Application") 
    obExcelApp.Visible = True 
    obExcelApp.Workbooks.Open("C:\test\toto.xls")
    merci en espérant que j'ai été assez clair!! c pas évident d'expliquer les pbs.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut Re: Ouvrir un Userform sans passer par Excel
    Citation Envoyé par jemigo
    Merci d'avoir répondu.

    J'ai bien compris ton message. Mais lorsque que je lance mon fichier par l'auto open ma userform se s'affiche pas!!
    Ce fichier est une macro : "toto.xls". la userform est comprise dedans. lorsque je lance le fichier "toto".xls, un tableur excel s"ouvre. Ensuite je d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub toto()
     
    'toto macro
     
    page1.Show
     
    End Sub
     
    Private Sub Workbook_Open()
        page1.Show
     
    End Sub
    ote moi un doute ... la macro WorkBook_open et bien dans le code associé au classeur et non dans un module à part...?

    sous VBA , dans arborescence à gauche clic bouton droit sur ThisWorKbook puis code ...

  16. #16
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Essaie ça: met dans le Workbook_Open de ton classeur le code qui se trouve dans l'événement "Click" du bouton sur lequel tu cliques quand tu fais l'opération manuellement.

  17. #17
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Bon, j'ai eu ce pb avec office 97. (macro Workbook_Open inactive) Pour le résoudre, dans le module de démarrage Workbook_open, j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Workbook_Open()
        ActiveWorkbook.RunAutoMacros Which:=xlAutoOpen
    End Sub
     
    Sub Auto_Open()
        Application.WindowState = xlMinimized
        Load MaForm1
        MaForm1.Show
    End Sub
    Ainsi, lancé depuis l'explorateur, le fichier s'ouvre sur la form (Excel masqué)

    le seul truc, c'est qu'il faut faire un clic dans la barre des tâches pour afficher l'userform... (Excel restant masqué) et je n'ai pas encore trouvé comment corriger ça
    Mais il y aura bien quelqu'un pour trouver la solution...

    Maintenant, pour démarer Excel depuis VBS, je laisse les es'spécialistes s'en charger

    J'attends !

    A+

  18. #18
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut ouverture d'un Userform sans passer par Excel
    concernant la technique à utiliser pour ouvrir un UserForm sans passer ouvrir Excel, j'ai utilisé la méthode de notre collègue MEGAXEL qui fonctionne très bien.

    Pour cela, il faut créer un script VBS pour l'ouverture de la Userform ( voir les articles précédent), et enfin intégrer une fonction workbooks_open dans le module "THISWORKBOOK" dans cette fonction écrire le code suivant, qui permet d'afficher la Userform seulement au lancement du script VBS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Userform.Show
    End Sub
    Cela fonctionne très bien!!

    Cependant, lorsque nous avons une succession de plusieurs UserForm, comment peut faire réapparaitre la fenètre Excel à la suite de la dernière Userform ???
    Car le Problème du script c'est que lorsqu'il ne voit plus de Userform, il ferme le fichier Excel et quitte.

  19. #19
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Car le Problème du script c'est que lorsqu'il ne voit plus de Userform, il ferme le fichier Excel et quitte.
    Logique, non ?
    Pour faire apparaître Excel, tu mets ta commande après "MaForm.show"
    Le code ne sera exécuté qu'après fermeture de tes forms.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open() 
        Userform.Show 
        'Là tu fais ce que tu veux avec ton classeur
        Application.WindowState = xlMaximized
    End Sub
    Pas essayé mais ça devrait marcher

    A+

  20. #20
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je dirais que dans le script VBS, il faut enlever les lignes de la fin (le .Close et le .Quit), et mettre à la place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    obExcelApp.Visible = True
    Mais je n'ai pas essayé...

Discussions similaires

  1. Afficher un UserForm sans passer par Initialize
    Par linkcr15 dans le forum VB.NET
    Réponses: 4
    Dernier message: 30/04/2012, 10h27
  2. resoudre equation en VBA sans passer par excel
    Par clemouille dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 13/05/2009, 13h15
  3. Réponses: 5
    Dernier message: 09/05/2007, 10h00
  4. [VBA] Envoi mail sans passer par outlook
    Par PoZZyX dans le forum Access
    Réponses: 8
    Dernier message: 12/04/2006, 16h27
  5. [VBA-A] Envoi de mail sans passer par Outlook ou autre.
    Par genius99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 07h50

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