XL 2016 Définir un userform en variable

Laurent97310

XLDnaute Nouveau
Bonjour à tous,

Je bloque sur un sujet. J'ai créé un userform de recherche (d'articles) appelé "Search_Article" que j'aimerais utiliser avec d'autres userforms. Pour celà j'ai commencé par mettre dans un module:

Public UFName As Object, UFtextbox As String
pour transformer en variable le nom de l'userform et la textbox qui viendra récupérer le résultat de la recherche.

Dans mon userform qui va appeler le userform de recherche j'ai mis:

Private Sub Com_Search_Article_Button_Click()
UFName = Me.Name
UFtextbox = "M_Article_Combobox"
UFmessage = "Sélectionnez un article depuis la liste"
Search_Article.Show
End Sub

Dans ma recherche:
Private Sub CommandButton1_Click()

If ListBox1.ListIndex = -1 Then
MsgBox UFmessage
Else
UFName.Controls(UFtextbox) = ListBox1.List(ListBox1.ListIndex, 0)
UFName.Controls(UFtextbox).SetFocus

Unload Me
End If
End Sub


J'ai ensuite l'erreur suivante:
1620901915221.png



Je pense que je définis mal la variable de l'userform UFName J'ai essayé de chercher sur les différents forums mais en vain...


Merci d'avance pour votre aide!!

Laurent,
 

dysorthographie

XLDnaute Impliqué
Bonjour,
Dans ton userform qui va appeler le userform de recherche j'ai mis:
VB:
Private Sub Com_Search_Article_Button_Click()
Dim Usf As New Search_Article
Usf.UFmessage = "Sélectionnez un article depuis la liste"
Usf.Show vbModal
With Usf.ListBox1
    Me.UFtextbox = .List(.ListIndex, 0)
End With
Unload Usf

End Sub
Dans ta recherche:
Code:
Public UFmessage As String
Private Sub CommandButton1_Click()

If ListBox1.ListIndex = -1 Then
MsgBox UFmessage
Else
 Me.Hide
End If
End Sub
 

Laurent97310

XLDnaute Nouveau
Merci dysorthographie, par contre j'ai une erreur sur UFTEXTBOX:
1620905918754.png


Pour mieux expliquer ce que je cherche à faire voici quelques screens:
Quand je clique sur la loupe du mon premier userform:
1620906180751.png

J'ai un second userform de recherche qui s'ouvre:
1620906243820.png

Je cherche mon matériel, je sélectionne la ligne et je clique sur "valider". La valeur de la colonne de gauche vient alors se mettre ici (M_Article_Combobox):
1620906293927.png
 

dysorthographie

XLDnaute Impliqué
donc le code est!
VB:
Private Sub Com_Search_Article_Button_Click()
Dim Usf As New Search_Article
Usf.UFmessage = "Sélectionnez un article depuis la liste"
Usf.Show vbModal
With Usf.ListBox1
    Me.M_Article_Combobox= .List(.ListIndex, 0)
End With
Unload Usf

End Sub
 

Laurent97310

XLDnaute Nouveau
En fait j'ai plusieurs formulaires de base (j'essaie de créer une GMAO).
J'ai un formulaire de sortie de matériel sur intervention
J'ai un formulaire de commande
J'ai un formulaire de création d'article

Je souhaite pouvoir appeler ce formulaire de recherche sur chacun d'entre eux pour aider à la sélection d'un code article "AJOUTER UN ARTICLE":
1620908714736.png


1620908745506.png


1620908800372.png


Aujourd'hui j'ai créé un formulaire de recherche spécifique à chaque autre formulaire, car je n'arrive pas à appeler la variable d'un userform:
????????????.Controls(UFtextbox) = ListBox1.List(ListBox1.ListIndex, 0)

Si je mets le nom du formulaire complet (exemple "OT_Edition"), tout marche sans problème. Mais vu que je veux qu'un seul formulaire de recherche je souhaite remplacer "OT_Edition" par une variable en fonction de l'userform de base qui va l'appeler.
 

ChTi160

XLDnaute Barbatruc
Re
dommage ! (pour le Fichier)
Tu peux peut être utiliser une variable qui prendra la valeur du Usf appelant et ainsi pouvoir utiliser un seul Userform de recherche .
dans un Module du Fichier

Public UsfAppelant as Object
a l'ouverture de chacun de tes Userform appelant tu mets :
dans le Initialize de chaque Userform
Set UsfAppelant =Me
puis du Userform de recherche faire
With Me.listbox1
UsFAppelant.M_Article_Combobox= .List(.listIndex,0)
End With
Non testé pas de fichier
Bonne continuation
jean marie
 
Dernière édition:

Laurent97310

XLDnaute Nouveau
Voici mon fichier, j'ai pris un peu de temps pour "l'alléger" avec le strict nécessaire. Pour accéder au formulaire il faut sélectionner une ligne puis cliquer sur Editer Commande puis sur l'onglet Articles et la loupe. Il y aura une erreur du à la mauvaise définition de la variable de l'userform.

Si vous faites Créer commande, la loupe est cette fois ci connecté à un autre userform où le nom est clairement défini, et ça marche.
 

Pièces jointes

  • 2021-5-13-14-15_GMAO OFFLINE.xlsm
    405 KB · Affichages: 17

ChTi160

XLDnaute Barbatruc
Re
Un fichier perfectible Lol
je n'ai traité que le Userform Editer
dans création il suffit de mettre
Set UsfAppelant = Me 'en tête de procédure Initialise
jean marie
 

Pièces jointes

  • 2021-5-13-14-15_GMAO OFFLINE chti160.xlsm
    180.3 KB · Affichages: 6
Dernière édition:

Laurent97310

XLDnaute Nouveau
Re
Un fichier perfectible Lol
je n'ai traité que le Userform Editer
dans création il suffit de mettre
Set UsfAppelant = Me 'en tête de procédure Initialise
jean marie
Je n'en doute pas qu'il soit perfectible 😁. Je viens de commencer le VBA depuis 3 semaines. En tout cas, merci beaucoup pour ton aide, ca marche parfaitement. Je viens de comprendre mon erreur, je n'appelais pas la variable au bon moment.

Merci beaucoup Jean-Marie.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Userform Excel VBA
Réponses
12
Affichages
446
Haut Bas