Pouvoir utiliser l'userform sans avoir à cliquer...

libellule85

XLDnaute Accro
Bonjour tout le monde,
Voici mon petit problème : quand je clique sur la cellule b2 j'ai un userform avec liste déroulante en cascade qui apparait et une fois que j'ai sélectionné l'adresse dans la dernière liste déroulante l'userform se referme cela me rempli les cellules B4 à B10 (prénom, n° licence, adresse etc...) là je n'ai pas de problème. Mon problème vient du fait que si je veux choisir un autre nom je dois d'abord cliquer n'importe où sur la feuille puis revenir sur la cellule b2 pour que celà refonctionne, ma question : n'y aurait-il pas un bout de code pour que l'on puisse recliquer aussitôt sur la B2 pour rechercher un nouveau nom ?

Code qui figure sur ma feuille Choix :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    UserForm1.Show 0
  End If
End Sub

Code de l'userform :

Code:
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
  Set f = Sheets("Listing")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
  SendKeys "{F4}"
End Sub
Private Sub ComboBox1_Change()
  Set f = Sheets("Listing")
  i = 0
  Me.ComboBox2.Clear
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
   If c = Me.ComboBox1 Then
       Me.ComboBox2.AddItem
       Me.ComboBox2.List(i, 0) = c.Offset(, 1).Value
       Me.ComboBox2.List(i, 1) = c.Offset(0, 2).Value
       Me.ComboBox2.List(i, 2) = c.Offset(0, 3).Value
       Me.ComboBox2.List(i, 3) = c.Offset(0, 4).Value
       Me.ComboBox2.List(i, 4) = c.Offset(0, 5).Value
       Me.ComboBox2.List(i, 5) = c.Offset(0, 6).Value
       Me.ComboBox2.List(i, 6) = c.Offset(0, 7).Value
       Me.ComboBox2.List(i, 7) = c.Offset(0, 8).Value
       i = i + 1
   End If
  Next c
  Me.ComboBox2.SetFocus
  SendKeys "{F4}"
End Sub
Private Sub ComboBox2_Change()
   If Me.ComboBox2.ListIndex > -1 Then
     ActiveCell = Me.ComboBox1
     ActiveCell.Offset(2) = Me.ComboBox2
     ActiveCell.Offset(3) = Me.ComboBox2.Column(1)
     ActiveCell.Offset(4) = Me.ComboBox2.Column(2)
     ActiveCell.Offset(5) = Me.ComboBox2.Column(3)
     ActiveCell.Offset(6) = Me.ComboBox2.Column(4)
     ActiveCell.Offset(7) = Me.ComboBox2.Column(5)
     ActiveCell.Offset(8) = Me.ComboBox2.Column(6)
     End If
   Unload Me
End Sub

J'espère avoir été assez clair dans ma demande,
Merci d'avance pour vos réponses
 

Fred0o

XLDnaute Barbatruc
Re : Pouvoir utiliser l'userform sans avoir à cliquer...

Bonjour libellule,

Essaie juste ne modifiant la macro évènementielle comme ça :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    UserForm1.Show 0
    [B3].select
  End If
End Sub

A+
 

libellule85

XLDnaute Accro
Re : Pouvoir utiliser l'userform sans avoir à cliquer...

Bonjour FredOo,
Je te remercie pour ta réponse mais en mettant [B3].select celà décale les réponses (par contre ce qui est bien c'est que je n'ai pas besoin de recliquer ailleurs pour choisir un nouveau nom)

car avec mon code le nom choisi avec l'userform apparait dans la cellule B2 et le reste des infos de la b4 à b10 (image ci-dessous)


@+
 

Fred0o

XLDnaute Barbatruc
Re : Pouvoir utiliser l'userform sans avoir à cliquer...

Re bonjour libellule85,

J'ai pas mis l'instruction au bon endroit. Écris donc ceci :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    UserForm1.Show 0
  End If
End Sub

puis
VB:
Private Sub ComboBox2_Change()
   If Me.ComboBox2.ListIndex > -1 Then
     ActiveCell = Me.ComboBox1
     ActiveCell.Offset(2) = Me.ComboBox2
     ActiveCell.Offset(3) = Me.ComboBox2.Column(1)
     ActiveCell.Offset(4) = Me.ComboBox2.Column(2)
     ActiveCell.Offset(5) = Me.ComboBox2.Column(3)
     ActiveCell.Offset(6) = Me.ComboBox2.Column(4)
     ActiveCell.Offset(7) = Me.ComboBox2.Column(5)
     ActiveCell.Offset(8) = Me.ComboBox2.Column(6)
     End If
   Unload Me
   [B3].Select
End Sub

A+
 

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar