Je sèche là, j'y suis arrivé ce matin, depuis trou de mémoire.
Je capture un évènement double clic sur une feuille de calcul, précisément dans une cellule, et de cette cellule, je dois initialiser des valeurs d'un formulaire.
J'ai une procédure publique dans mon formulaire qui se déclare comme ça:
Code:
Public Sub Affecter_Valeur(R as Range)
monTextBox.Text = R.Value
End Sub
et dans mon event double-clic, je fais ceci:
Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Sh.Name = "Feuil1" Then
If Not (Target Is Nothing) Then
UserForm1.Affecter_Valeur (Target)
End If
End If
End Sub
Et il plante sur la ligne UserForm1.Affecter_Valeur(Target). Erreur d'éxécution "424": Objet Requis.
Pourtant, le UserForm1 est correctement chargé/affiché, et l'objet Target aussi.
Pour information, je lance mon code comme ceci:
Code:
Public Sub Init_FRM()
Load UserForm1
UserForm1.Show False
End Sub
en cliquant sur le bouton de la Feuil1.
Et après seulement, je teste mon double clic.
C'est très certainement idiot, mais on m'a collé des modèles de données et des réunions toute la journée, j'ai la tête un peu en vrac.
Re : Capturer double clic sur une feuille pour initialiser un formulaire
Rebonjour Hasco, bonjour Pierrot,
En fait, j'ai testé d'abord sur le code de la feuille même, mais j'ai le même problème.
Ensuite, mes raisons de ne pas mettre de code dans les feuilles, c'est essentiellement parce qu'il est possible que je copie ces feuilles pour les exporter dans un autre classeur (à destination de certains utilisateurs qui ne sont pas dans mon process par exemple), et il ne faut alors pas de code dans la feuille copiée.
Vrai que je pourrais affecter directement la valeur dans le textbox, mais pour ça, mon classeur exemple est mal fait.
En réalité, c'est pas une seule information que je cherche à récupérer avec le Target.
Il y a ligne et colonne (row et column de Target donc), le comment.Text dans lequel je référence un identifiant, etc etc
C'est pour ça que le Target me plait bien.
D'autre part, avec les traitements du formulaire, je vais peut-être devoir déplacer la "cellule" d'un endroit à un autre, et le fait de garder l'objet Range m'aiderait bien pour les traitements qui suivent.
C'est pour ça que je cherche à transmettre la Range Target.
Voilà pour le pavé, maintenant les remerciements.
Tu avais raison, problème de parenthèse (et du coup, je me souviens aussi du "Call" utilisé ce matin dans le code ...)