[résolu] Barre d'outils en VBA

totaljim

XLDnaute Nouveau
Bonjour le forum !

Voila mon projet :
je travaille sur une boite à outils (enfin c'est comme ca que j'ai décidé de l'appeler)
C'est un userform qui doit se lancer à l'ouverture du classeur (le but c'est d'en faire un modèle excel) avec plusieurs boutons qui en fonction de la feuille sur laquelle on est n'envoie pas vers les memes userform
Ex : je suis sur la feuille1 et je clique dans ma boite à outils sur ajouter il va alors m'ouvrir l'userform ajouter1 alors que si je suis sur la feuille 2 et que je clique sur le meme bouton il m'ouvrira l'userform ajouter2 (qui ne sera pas le meme évidemment que ajouter 1).

J'espere que la description de ce que je voudrais faire est clair.

Mes soucis :

- je ne sais pas comment faire pour activer un userform à l'ouverture d'un fichier excel et faire en sorte qu'il reste tant qu'on n'a pas cliquer sur le bouton "quitter" de cet userform tout cela sans gener le passage d'une feuille à une autre
- est ce possible ?
- j'avais trouvé ca
Private Sub Workbook_Open()
boutils.show
End Sub
mais je ne sais pas comment ca marche !

- Comment tester la feuille sur laquelle on est ?
if jesuissurlapage2 then ...


En attendant votre propositions et explications surtout
Merci d'avance
TotalJim
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Barre d'outils en VBA

Bonjour.

Parmi les possibilités intéressantes il y a celle qui consiste à déclarer en tête de l'Userform :
VB:
Private WithEvents Excel As Application
Et à faire dans l'UserForm_Initialize :
VB:
Set Excel = Application
Vous pourrez alors écrire dans l'Userform des procédure pour prendre en charge tous les évènements de l'objet Excel.
 

totaljim

XLDnaute Nouveau
Re : Barre d'outils en VBA

Bonjour Paf !
Comment ais je pu ne pas penser a Activesheet.Name ??
Merci du coup
if jesuissurlapage2 then ...
est devenu
If ActiveSheet.Name = "name" Then
userform.Show
Ca marche bien

Edit : Je viens juste de voir ton message Dranreb je vais tester ce que tu me proposes !
Par contre ca veut dire que je fais pas d'appel de cet userform donc où je mets le "boutils.show 0#" pour rendre l'userform non modal ??
 
Dernière édition:

totaljim

XLDnaute Nouveau
Re : Barre d'outils en VBA

Bon pour le modal, il suffit de mettre false dans les propriétés du userform à ShowModal ! Ca c'est reglé
Par contre j'ai essayé ce que tu m'as donné Dranred et il ne se passe rien :S
J'ai du mal faire !
Aurais tu un exemple stp ?
 

totaljim

XLDnaute Nouveau
Re : Barre d'outils en VBA

Eh bien a vrai dire je ne connais rien du tout aux events sur excel :(
Donc je vois pas trop ce que je dois faire
Moi ce que je veux c'est que l'userform s'active des l'ouverture du fichier

Je lance excel je créé un nouveau fichier je selectionne le modèle (que je suis en train de réaliser) et la BIM il m'ouvre ma boite à outils en meme temps qu'il créé ce nouveau document ! Voila ce que je voudrais en fait ^^

Je t'ai coller l'userform boite a outils si ca t'intéresse ^^
Private WithEvents Excel As Application

Private Sub UserForm_Initialize()
Set Excel = Application
End Sub

Private Sub UserForm_Activate()
With Me 'affiche l'USF en bas à droite
.Top = Application.Height - Me.Height - 12
.Left = Application.Width - Me.Width - 12
End With
End Sub


Private Sub bmef_Click()
If ActiveSheet.Name = "f1" Then
Module1.mef
ElseIf ActiveSheet.Name = "f2" Then
Module2.mef
End If
End Sub
 

totaljim

XLDnaute Nouveau
Re : Barre d'outils en VBA

Dranreb
Merci beaucoup pour ton aide !
J'avais pas vu ou était ThisWorkbook
Ca marche niquel

Bon ca n'a pas vraiment de rapport mais savez vous comment contourner l'arret du programme lorsque je clique sur annuler quand je vais chercher un fichier

Dim cheminComplet As String
cheminComplet = Application.GetOpenFilename

' Ouverture du fichier : '
Workbooks.Open cheminComplet
nom = ActiveWorkbook.Name

Quand j'annule lors de la sélection du fichier cheminComplet devient faux et ca arrete l'exécution de la macro et donc ca me fait perdre ma boite à outils :S
 

Dranreb

XLDnaute Barbatruc
Re : Barre d'outils en VBA

Réponse au #6.
Je pensais à quelque chose comme ça :
VB:
Option Explicit
Private Withevents Excel As Application, IdxFeui As Long
Private Sub UserForm_Initialize()
Set Excel = Application
End Sub
Private Sub Excel_WorkbookActivate(ByVal Wb As Workbook)
If Wb.Name = ThisWorkbook.Name Then
   Me.Show
   Excel_SheetActivate Wb.ActiveSheet
Else
   Me.Hide: End If
End Sub
Private Sub Excel_SheetActivate(ByVal Sh As Object)
If Not Me.Visible Then Exit Sub
IdxFeui = Sh.Index
End Sub
…mais ça ne convient sans doute pas d'après ce que tu veux faire.
Pour gérer d'autre évènement sélectionne "Excel" dans la liste "Objet" et celui que tu veux dans la liste "Procédure" (ce sont les deux larges listes déroulantes qui surmontent la fenêtre de code)

P.S. Pour la dernière question déclarer (hélas) cheminComplet As Variant et tester If VarType(cheminComplet) <> vbString Then Exit Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 240
Membres
103 162
dernier inscrit
fcfg