Petite question sur les Userform

zack22

XLDnaute Nouveau
Bonjour,

Je persévère
J'ai crée un Userform1 qui ouvre un (sous menu "communs" Userform 2)
Je ne vois pas comment je pourrais lié bouton userform1 + boutonuserform2 à une feuilles MAIS que si on clic sur bouton2 userform1 + boutonuserform2 ouvre une autre feuille ?
Y a bien la solution de crée autant d userform "communs" que de bouton mais si vous avez une autre solution :)

Merci pour votre aide et conseil
 

Pièces jointes

  • Toto.xlsm
    67.9 KB · Affichages: 32
  • Toto.xlsm
    67.9 KB · Affichages: 35
  • Toto.xlsm
    67.9 KB · Affichages: 38

Dranreb

XLDnaute Barbatruc
Re : Petite question sur les Userform

Bonsoir.

À mon avis ça passe par une procédure Public dans l'Userform2. Soit une Public Sub à laquelle vous passez en paramètres 4 expressions Worksheet représentant les 4 feuilles à activer par Userform2 selon le bouton, Soit une Public Function qui renvoie un code selon le bouton utilisé à l'Userform1 qui fera lui l'activation appropriée. Attention: une procédure Public dans un module objet doit être invoquée précédée du nom de l'objet suivi d'un point. N'oubliez pas d'y mettre un Me.Show

Par exemple dans Userform2:
VB:
Option Explicit
Dim Texte As String
Public Function SousCommande() As String
Me.Show
SousCommande = Texte
Unload Me
End Function
Private Sub CommandButton1_Click()
Texte = CommandButton1.Caption
Me.Hide
End Sub
Private Sub CommandButton2_Click()
Texte = CommandButton2.Caption
Me.Hide
End Sub
Private Sub CommandButton3_Click()
Texte = CommandButton3.Caption
Me.Hide
End Sub
Private Sub CommandButton4_Click()
Texte = CommandButton4.Caption
Me.Hide
End Sub
Et ce petit test à développer dans Userform1 :
VB:
Private Sub X_Click()
Me.Hide
Select Case UserForm2.SousCommande
   Case "outillage": MsgBox "C'est de l'outillage"
   Case Else: MsgBox "Ce n'est pas de l'outillage"
   End Select
Unload Me
End Sub
 
Dernière édition:

zack22

XLDnaute Nouveau
Re : Petite question sur les Userform

Merci pour ta réponse.
Dans l userform2 le bouton par exemple "outillage" doit ouvrir une feuille du classeur.

Mais en fonction du premier bouton de l userform1 la feuille sera différente.


Un exemple : Clic sur bouton x (usf1) et clic sur outillage (usf2) ouvre la feuille outillage de Mr x
Clic sur bouton y (usf1) et clic sur outillage (usf2) ouvre la feuille outillage de Mr y

Merci pour ton aide
 

Dranreb

XLDnaute Barbatruc
Re : Petite question sur les Userform

Oui j'ai bien compris mais pourquoi devrait-ce être l'Userform2 qui activerait cette feuille plutôt que l'Userform1 ?
Il va de soit qu'au lieu du MsgBox "C'est de l'outillage", c'est votre activation de feuille que vous devez programmer. Vous savez laquelle c'est puisque vous êtes encore dans la procédure du bouton X de l'Userform1. Et vous devez faire les 3 autres Case pour les 3 autres boutons. Réserver le Case Else au bouton menu
VB:
Case Else: Me.Show: Exit Sub

Si vous tenez à ce que ce soit l'Userform2 qui le fasse, alors il faut lui indiquer les 4 feuilles à ouvrir pour chacun de ses boutons. Ce n'est pas plus simple.

Remarque: s'il y a une règle fiable pour construire le nom de la feuille en connaissant le bouton utilisé dans l'Userform1, il suffit de transmettre son caption à une Public Sub de l'Userform2 cette fois.
 
Dernière édition:

zack22

XLDnaute Nouveau
Re : Petite question sur les Userform

Merci pour ta réponse.
J'ai 12 collègues (usf1) , mais en usf2 (c est la liste commune (outillage...etc)
Je lance la commande de usf2, si je cherche outillage du collègue x.Il me semble de taper Mr x et puis outillage et on arrive sur sa feuille.

Pour la commande dans le bouton usf2

sheets("feuil1").Activate mais en fonction de la selection du collegue sur usf1
Je dois aller chercher la variable (Me ?) pour changer le N° de feuille

Merci
 

zack22

XLDnaute Nouveau
Re : Petite question sur les Userform

Lol ...j arrive pas à me relire
Je serais étonné que tu comprennes quelque chose

J'ai 12 collègues (usf1) , mais en usf2 (c est la liste commune (outillage...etc)

La variable que je tape en usf1 (me?), doit être récupéré pour quand je tape sur le bouton outillage usf2
J'ai outillage + variable affiche feuille x ou y.
 

Dranreb

XLDnaute Barbatruc
Re : Petite question sur les Userform

Vous parlez de taper "Mr x" maintenant ? De toute façon je croyais que ce n'était que des exercices de communication d'informations entre Userform. C'est clair que le plus pratique concrètement serait un seul Userform avec un ComboBox en tête pour choisir le collègue, et les 4 boutons en dessous.
 

zack22

XLDnaute Nouveau
Re : Petite question sur les Userform

J'ai refait le fichier
Lucien + outillage = feuil1
Lucien + vetement= feuil 2
.
.
.
marc + outillage = feuil 5 etc....

Merci de ta persévérance
 

Pièces jointes

  • Toto.xlsm
    64.7 KB · Affichages: 29
  • Toto.xlsm
    64.7 KB · Affichages: 30
  • Toto.xlsm
    64.7 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
Re : Petite question sur les Userform

Bon ben il ne vous reste qu'a faire dans Userform1 les :
VB:
Private Sub CommandButton1_Click()
Me.Hide
Select Case UserForm2.SousCommande
   Case "outillage": Feuil1.Activate
   Case "vetement": Feuil2.Activate
   Case "carte": Feuil3.Activate
   Case "machine": Feuil4.Activate
   Case Else: Me.Show: Exit Sub: End Select
Unload Me
End Sub

Private Sub CommandButton2_Click()
Me.Hide
Select Case UserForm2.SousCommande
   Case "outillage": Feuil4.Activate
   Case "vetement": Feuil5.Activate
   Case "carte": Feuil6.Activate
   Case "machine": Feuil7.Activate
   Case Else: Me.Show: Exit Sub: End Select
Unload Me
End Sub

Etc.
 

zack22

XLDnaute Nouveau
Re : Petite question sur les Userform

Parfait :)
J'ai refait tout le fichier, bon exercice

J'ai juste encore une petite demande
quand tu as cliquer sur le bouton (final) de usf2, il va bien sur la bonne feuille mais le classeur reste en minimiser dans la barre de tâche.
 

Discussions similaires

Réponses
1
Affichages
133

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo