Comment démarrer un formulaire avec VBA pour EXCEL?
Sylvain
-
30 mars 2001 à 09:04
ABIDIME
Messages postés1Date d'inscriptionlundi 15 septembre 2008StatutMembreDernière intervention16 septembre 2008
-
16 sept. 2008 à 09:58
Est-il possible de démarrer un formulaire de VBA pour EXCEL dès l'ouverture du fichier avec EXCEL 97? Et, si oui, comment SVP. (Une sorte d'autorun pour les formulaires)
il y a peut etre un autre moyen, mais tu peux tenter d enregistrer ta macro dans le fichier toto.xls
la premiere instruction de ta macro peut etre d afficher ton formulaire enregistré dans toto.xls (nomformulaire.show).
dans ta barre d outils tu ajoutes un bouton de macro qui lance ton sub de ton fichier toto.xls
Avant tout, permets-moi de te remercier d'avoir répondu à mon message.
Je fais une application multi-formulaires qui ne se sert d'EXCEL que comme support en arrière-plan. Idéalement, les utilisateurs ne devraient même pas avoir accès aux feuilles de calcul (un peu inhabituel..., j'admets).
L'interface utilisateur, les entrées/sorties, la gestion de la BD, l'impression des rapports, tout est géré par une batterie de formulaires dont le premier doit idéalement s'activer au moment où on veut accéder à l'application. (Ie. Un raccourci sur le bureau vers l'application, lance EXCEL qui lance automatiquement le formulaire maître qui lui gère les suivants)
Actuellement, en cliquant avec le bouton droit de la souris sur le premier feuillet, puis en coisissant voir code, je me suis rendu à "Sub Workbook_open()"
J'ai tenté de faire:
Application.Windowstate = x|Minimisize
UserFormDémarrage.Show
Cela entraîne qu'EXCEL se minimise dans la barre des tâches de Windows (jusque là OK) mais à l'exécution de la seconde ligne, au lieu de voir le formulaire s'afficher (même avec l'option StartUpPosition à center screen), j'ai un clignottement du bouton EXCEL dans la barre des tâches. Si je clique dessus alors le formulaire apparaît.
Je ne sais pas quoi faire pour éliminer ce problème (une idée?)
La seconde approche et au même endroit (Woorkbook_open):
Application.Width = 80
Application.Height = 80
Application.Left = 250
Application.Top = 200
UserFormDémarrage.Show
donne une toute petit fenêtre EXCEL sur le bureau qui est recouverte par mon formulaire... mais ça fonctionne bien que ce ne soit pas très élégant.
1) Aller dans la feuille "ThisWorkbook"
2) Créer une macro Private Sub Workbook_Open()
3) Placer le Userform.show dedans
4) Energistrer le fichier, le fermer puis le réouvir!
1) Aller dans la feuille "ThisWorkbook"
2) Créer une macro Private Sub Workbook_Open()
3) Placer le Userform.show dedans
4) Energistrer le fichier, le fermer puis le réouvir!
Vous n’avez pas trouvé la réponse que vous recherchez ?
1) Aller dans la feuille "ThisWorkbook"
2) Créer une macro Private Sub Workbook_Open()
3) Placer le Userform.show dedans
4) Energistrer le fichier, le fermer puis le réouvir!
Salut,
Moi je vais faire simple:
Lorsque tu es en mode VBA,tu cliques sur "this workbook",
et tu tapes Private sub workbook_open()
(NomdetonFormulaire).show
end sub
Si je n'est pas compris ta question contacte moi.
A plus,
Gab.
Merci de ta réponse, c'est très aimable de ta part.
Ayant du livrer le produit plus tôt, j'avais déjà trouvé la solution que voici (non sans mal je dois l'avouer):
Se rendre au code de la feuille de calcul,
Private Sub Workbook_Open() "
Feuil1.Select ; pour l'application particulière
Range("A1").Select ; idem
; minimiser EXCEL dans la barre des tâches
Application.WindowState = x1Minimized
; faire démarrer le formulaire SANS la feuille de calcul
AppActivate "Microsoft Excel"
; Faire afficher le formulaire de départ = application
UserForDemarrage.Show
End Sub
Ça fait exactement ce que j'espérais, l'utilisateur n'a même pas accès à EXCEL mais travaille exclusivement dans les formulaires (je me suis évidemment gardé une entrée protégée par mot de passe)
Je te remercie encore de ta gentillesse et si la trouvaille peut te servir ne t'en prive surtout pas.
A plus tard,
Sylvain
-------------------------
Réponse au message :
-------------------------------
Salut,
Moi je vais faire simple:
Lorsque tu es en mode VBA,tu cliques sur "this workbook",
et tu tapes Private sub workbook_open()
(NomdetonFormulaire).show
end sub
Si je n'est pas compris ta question contacte moi.
A plus,
Gab.
Très bon, j'en avais besoin également pour une application pour nos clients. Je voulais en fait qu'ils n'aient pas accès unx sheets. Il faut juste préciser que en cas ou on sort des userforms il ferme le workbook.
J'avais également ceci comme code:
Il cache les différentes sheets. Cependant il y en a une qui doit rester à l'écran. J'ai alors du bricoler et mettre un fond dessus.
Un autre problème pourrait se poser. Comment faire si on veut que les formulaires s'adaptent à la taille de l'écran =
En VB je pense qu 'on peut utiliser le code userform.height=screen.height ...ect
Si t'as une idée ?
For Each sh In Sheets 'rend non visibles les sheets
sh.Visible = True
Next sh
Application.CommandBars("Full Screen").Visible = True
Application.DisplayFullScreen = False 'plein écran
With ActiveWindow
.DisplayHeadings = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
End With
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = False
End With
Ceci peut également être fort utile afin qu'on ne puisse pas sortir par les bouton de sortir de la barre de titre:
Private Sub userform_QueryClose(cancel As Integer, CloseMode As Integer)
'Prevent user from closing with the Close box in the title bar.
If CloseMode <> 1 Then cancel = 1
certetpériodes.Caption = "La sortie ne peut se faire qu'à partir des boutons ci-dessous !"
End Sub