Remplir textbox avec variable à l'ouverture USF

chris6999

XLDnaute Impliqué
Bonjour


Une petite question de bon matin car là je sèche.

Comment faire remonter des variables dans mes textbox à l'initialisation de l'Userform.
J'ouvre l'USF depuis un double clic et je souhaiterais que les textbox s'incrémentent en fonction des valeurs de ma ligne active.

J'ai mis ce code qui me paraissait le plus adapté mais cela ne fonctionne pas et l'USF ne parvient pas à s'ouvrir.
Erreur d'exécution.


Sur ma feuille
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 20 Then 'A
USF.Show (USF = nom de mon userform)
end if
end sub

Dans le code de mon USF
Private Sub UserForm_Initialize()
Dim lig As Long
lig = ActiveCell.Row
Textbox1.Value = Range(lig, 14).Value & " " & Range(lig, 13).Value
Textbox2.Value = Range(lig, 9).Value
End Sub

Je ne mets pas de fichier joint car cela ne me semble pas forcément utile dans ce cas précis.

Merci d'avance pour votre aide et bonne journée à tous
 

Theze

XLDnaute Occasionnel
Bonjour,

Il te faut mettre tout le code dans le procédure événementielle et charger la Form au préalable et pour la récup des valeurs, utiliser des Offsets :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Column = 20 Then
       
        'évite l'entrée en édition de la cellule
        Cancel = True
       
        'charge la Form
        Load UserForm1
       
        'rempli les contrôles
        UserForm1.TextBox1.Value = Target.Offset(, -6).Value & " " & Target.Offset(, -7).Value
        UserForm1.TextBox2.Value = Target.Offset(, -11).Value
       
        'affiche
        UserForm1.Show
       
    End If
   
End Sub
 

laetitia90

XLDnaute Barbatruc
bonjour tous :):):)
tout passer par l'evenementielle pas une obligation:)
dans ce cas la on peut simplifier un peu

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)
With USF
.TextBox1 = Cells(T.Row, 14) & " " & Cells(T.Row, 13)
.TextBox2 = Cells(T.Row, 9)
  If T.Column = 20 Then .Show
End With
Cancel = 1
End Sub
 

Si...

XLDnaute Barbatruc
Bon_soir

d'accord avec Léti :D:) (content de te croiser)
et sans passer ni par Range ni par Cells
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Oust As Boolean)
  If R.Column <> 20 Then Exit Sub
  Oust = 1
  With Usf
      .TextBox1 = R(1, -6) & " " & R(1, -5)  ' (6 cellules à gauche, 5 cellules à gauche
      .TextBox2 = R(1, -10)                           '10 cellules à gauche
      .Show
  End With
End Sub
Mais, je préfère éviter d'éparpiller les initialisations de formulaire.
VB:
'pour le lancement du formulaire
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Oust As Boolean)
  If R.Column = 20 Then Oust = 1: Usf.Show
End Sub
'Pour son initilisation
Dim R As Range
Private Sub UserForm_Initialize()
  Set R = ActiveCell
  TextBox1.Value = R(1, -6) & " " & R(1, -5)
  TextBox2.Value = R(1, -10)
End Sub
d'autant plus que la cellule activée et souvent rappelée dans les autres procédures du formulaire.

Si tu veux garder ta syntaxe, fanfan ;) est de bon conseil.
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 799
Membres
101 818
dernier inscrit
tiftouf5757