XL 2019 Lancement d'un userform avec une variable en mémoire

Pieerre69

XLDnaute Junior
Bonjour à toutes et à tous,

Dans un private sub before double click, j'appelle un userform dans lequel je sélectionne des données dans une liste. Cette sélection est ensuite copiée dans une cellule.
J'aurais aimé que la sélection se copie sur la ligne du double click donc j'avais pensé à déclarer une variable public : position = target.row que j'appelais dans mon userform en faisant par exemple cells(position,3).value = [...]

J'avais donc écrit dans le private sub : Userform1(position).show, en pensant faire comme lorsque j'appelle un sub dans un autre sub tout en conservant la valeur d'une variable. Mais ça ne fonctionne pas o_O

Avez-vous une idée de ce que je peux faire ? Je ne sais pas si j'ai été suffisamment clair ..
 
Solution
je traduit en francais
dans la feuille
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With UserForm1: .ligne = Target.Row: .Show: End With
End Sub
traduction
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
avec l'UserForm1: la variable public ligne = Target.Row: .affiche le userform : End With
End Sub

parti de là ligne est dispo partout dans le userform

bien sur dans le userform en haut de module
public ligne as long
et c'est tout pas la peine d'aller chercher midi 14 heures ;)

si tu pige pas là je peux plus rien pour toi ;)

Pieerre69

XLDnaute Junior
re
j'ai dis relire le post 5 ou 12 c'est pas compliqué ;)
et vu que tu n'a pas l'air de bien maitriser la portabilité et la transmission de variable tient toi en au plus simple le 12
Effectivement je ne maîtrise pas totalement cette partie là, c'est pour ça que j'aurais aimé savoir que fait le #12. Le .ligne dans le private sub permet de sauvegarder la valeur de la variable avant d'appeler l'userform ?
 

Dranreb

XLDnaute Barbatruc
Il permet d'initialiser une propriété de l'UserForm appelée ligne.
Bien se mettre dans le crâne que tout ce qui est Public dans un module objet n'est que méthodes et propriétés. Seul dans un module standard une procédure ou une variable Public est connue sans préfixe qualificateur d'objet dans tout le projet VBA. À noter que, dans un souci de documentation, le nom du module standard la portant pourrait être spécifié à la place.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
je traduit en francais
dans la feuille
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With UserForm1: .ligne = Target.Row: .Show: End With
End Sub
traduction
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
avec l'UserForm1: la variable public ligne = Target.Row: .affiche le userform : End With
End Sub

parti de là ligne est dispo partout dans le userform

bien sur dans le userform en haut de module
public ligne as long
et c'est tout pas la peine d'aller chercher midi 14 heures ;)

si tu pige pas là je peux plus rien pour toi ;)
 

patricktoulon

XLDnaute Barbatruc
re
Userform1(posrow).show
tu devrais consulter (j'ai pas ecrit ça )
je repete une derniere fois
dans le module de ta feuille
Enrichi (BBcode):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With UserForm1: .posrow= Target.Row: .Show: End With
End Sub

et dans le module du userform
Enrichi (BBcode):
Public posrow As Long

'exemple d'utilisation
Private Sub CommandButton1_Click()
MsgBox posrow 
End Sub

c'est si compliqué que ça à comprendre?
 

Pieerre69

XLDnaute Junior
C'est bon !! J'ai enfin fini par réussir à comprendre et à le faire ;)
j'ai déclare la variable public posrow dans l'userform et le module private sub double click
+ écrit userform.posrow = target.row comme vous l'aviez préconisé.

Merci de votre patience !
 

Pieerre69

XLDnaute Junior
re
Userform1(posrow).show
tu devrais consulter (j'ai pas ecrit ça )
je repete une derniere fois
dans le module de ta feuille
Enrichi (BBcode):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With UserForm1: .posrow= Target.Row: .Show: End With
End Sub

et dans le module du userform
Enrichi (BBcode):
Public posrow As Long

'exemple d'utilisation
Private Sub CommandButton1_Click()
MsgBox posrow 
End Sub

c'est si compliqué que ça à comprendre?
Pas sûr que la condescendance soit vraiment de mise!
La différence d'expérience entre vous et moi permet d'expliquer le niveau de compréhension inégale.
Ce qui est logique pour vous qui avez 10 ans d'expérience ne l'est pas forcément pour moi qui suis plutôt un débutant !
Mais merci quand même de vos conseils
 

Discussions similaires

Statistiques des forums

Discussions
312 282
Messages
2 086 766
Membres
103 390
dernier inscrit
BMatoul