Lancer un UserForm avec des paramètres d'entrée (Target)

Bonjour à tous,

J'ai sur une feuille Excel base de donnée et lorsque je sélectionne une ligne (par double-clic), une fenêtre d'ouvre et demande si on veut bien utiliser Cells(Target.Row, 2) pour la suite de la procédure et lancer le UserForm.

En répondant oui, j'aimerai le UserForm prenne en donnée d'entrée les données de la lignes sélectionnée pour l'inclure dans son code (dans les caption, les choix, etc...)

Cependant, lorsque le UserForm.Show se lance, je ne parviens pas à lui donner des données d'entrée.

Dans UserForm_Initialize() , je ne parviens pas non plus à retrouver ma cible en utilisant Target.[...]

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    message = "Voulez-vous lancer " & Sheets("Suivi").Cells(Target.Row, 2) & " ?"

    If MsgBox(message, vbYesNo, "Demande de confirmation") = vbYes Then

        UserForm.Show

    End If

Toute aide sera la bienvenue,

En vous remerciant,

Alex

Bonjour,

Normalement dans le module de votre feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Message = "Voulez-vous lancer " & Cells(Target.Row, 2) & " ?"
If MsgBox(Message, vbYesNo, "Demande de confirmation") = vbYes Then
    UserForm1.Show
    Cancel = True
End If
End Sub

Et dans la procédure de l'UserForm :

Private Sub UserForm_Initialize()
With ActiveSheet
    Me.TextBox1 = .Cells(ActiveCell.Row, 1)
    Me.TextBox2 = .Cells(ActiveCell.Row, 2)
End With
End Sub

A adapter bien sûr à votre fichier ne l'ayant eu sous la main.

Pour information vous ne pouvez pas faire référence à Target dans l'userform ou un userforminitialize dans la procedure worksheet_beforedoubleclick.

Cdlt,

Bonjour, Alex et Bonjour Ergotamine.

Pourquoi le : With ActiveSheet ??? puisque la procédure se lance aprés un double clic de cellule Activecell est suffisant il a pas changé de feuille.

Bonjour Xmenpl,

C'est vrai qu'en soit l'objet est inutile ici. Mais comme dans le code du début il y avait un sheet("suivi") qui trainait je me suis dis que la macro était lancée d'une feuille mais les données se trouvaient sur une autre. Mais en soit j'aurai du utiliser With Worksheets("Suivi").

Après c'est une habitude que j'ai prise, comme de préciser Me ... Peut être à tord, je ne sais trop quelle est la "réglementation" de ce côté ...

Cdlt,

Merci beaucoup pour votre réponse,

Cela fonctionne bien en effet puisque la cellule sur laquelle je double-clic est sélectionnée (évidemment ).

Cela dit je trouve dommage qu'il n'y ai pas moyen d'entrer des paramètres d'entrée en initialisant des UserForms. Cela demande parfois de faire refaire appel à des fonctions à l'intérieur du UserForm ou alors de stocker des éléments dans une feuille pour aller les chercher dans le UserForm.

Bref, je ne comprend pas encore tout je débute sur VBA.

Merci encore pour votre aide !

bonjour,

Bon c'est encore un post foireux sans fichier alors je ne débattrai pas de la feuille active ou pas....

Mais par pitié on a déjà assez de mal avec tous ces Select et ActiveMachin sans aller faire de la pub pour ça :

Les paramètres sont pas fait pour les chiens et les Tag non plus...

Pour lancer le userform cliquer sur une des 3 cellules non vides...

83paramusf.xlsm (21.66 Ko)

A+

Bonjour galopin01,

Merci pour votre réponse et l'exemple.

Vous comprendrez que je ne peux pas joindre sur un forum publique mon fichier comportant des bases de données perso. Néanmoins, j'ai compris à votre ton aimable que c'était mal vu et pour éviter un prochain post "foireux" je penserai à joindre un fichier comportant le code dans de potentiels futurs posts.

A +

Bonjour,

Si vous voulez passer des paramètres à un UserForm, vous devez les définir comme variables publiques au niveau du module de cet objet. Comme ceci :

Public cible As Range
Public feuille As Worksheet

Private Sub UserForm_Activate()

    MsgBox "nom feuille = " & feuille.Name & " /adresse cellule = " & cible.Address

End Sub

Après au niveau de votre code, pour alimenter ces paramètres :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal sh As Object, ByVal target As Range, Cancel As Boolean)

    Message = "Voulez-vous lancer " & Sheets("Suivi").Cells(target.Row, 2) & " ?"

    If MsgBox(Message, vbYesNo, "Demande de confirmation") = vbYes Then
        With UserForm1
            Set .feuille = sh: Set .cible = target
            .Show
        End With

    End If

End Sub
Rechercher des sujets similaires à "lancer userform parametres entree target"