Pas d'évènement "Click" lié au (Worksheet) ??
Bonjour,
Je remarque que la liste d'évènements du worksheet ne propose pas d'évènement "Click" ...??,
En fait, le principe : je dois cliquer sur une cellule (B4 et B9) pour afficher le userform correspondant , j'ai donc utilisé le "SelectionChange"
mais je m'aperçois dès que l'on referme le userform et que l'on reclique à nouveau sur la même cellule (B4 ou B9) le user form n'apparait pas ;il faut alors bien sûr cliquer sur une autre cellule et revenir sur la précédente pour que le userform apparaisse de nouveau.
J'ai utilisé le "SelectionChange" qui était le plus approprié à ce que je souhaitais faire mais ce n'est pas l'idéal...:-((
Il existe d'autres évènements (DoubleClick, Activate, ....) mais comment faire apparaitre par un simple évènement (Click sur la cellule ) pour que la fenêtre s'affiche à chaque click ?
Merci.
Bonjour,
je ne suis pas spécialiste du VBA mais pourriez mettre le code dans un module (et pas sur la feuille) et associer la macro à un bouton placé où vous voulez sur la feuille. Et là chaque clic sur le bouton devrait lancer la macro.
Bonjour RaphaelXYZ
Si l'adresse de la cellule est correct (pour afficher un Userform), sélectionner une cellule qui ne déclenche aucune action. Par exemple si B4 alors sélectionner B3, si B9 alors sélectionner B8. Il y aura bien une deuxième entrée dans "SelectionChange" (récursivité) mais comme la nouvelle sélection ne sera ni B4 et ni B9, on ressortira de la procédure "SelectionChange" sans avoir rien fait pour continuer la première procédure "SelectionChange".
Une autre manière est d'entourer le select par Application.EnableEvents = False: Target.Offset(-1).Select: Application.EnableEvents = True. Dans ce cas, le select ne provoque pas la récursivité.
Voir le code avec les deux manières :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I As Long, j As Long, Valeur As Integer
On Error GoTo fin
If Target.Count > 1 Then Exit Sub
' ListBox des CENTRES triés par noms
If Not Intersect(Target, [b4]) Is Nothing Then
UserForm1.Liste.List = Sheets("CENTRE").Range("A1:A" & Sheets("CENTRE").[A10000].End(xlUp).Row).Value
With UserForm1.Liste
For I = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If .List(I) < .List(j) Then
temp = .List(I)
.List(I) = .List(j)
.List(j) = temp
End If
Next j
Next I
End With
Target.Offset(-1).Select
UserForm1.Show
End If
' ListBox des THEATRES triés par noms
If Not Intersect(Target, [b9]) Is Nothing Then
UserForm2.Liste.List = Sheets("BASE").Range("A1:A" & Sheets("BASE").[A10000].End(xlUp).Row).Value
With UserForm2.Liste
For I = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If .List(I) < .List(j) Then
temp = .List(I)
.List(I) = .List(j)
.List(j) = temp
End If
Next j
Next I
End With
Application.EnableEvents = False: Target.Offset(-1).Select: Application.EnableEvents = True
UserForm2.Show
End If
fin:
End SubMERCI bcp MaFRAISE, !!! cela fonctionne impec !!!, tu es vraiment THE KING of VBA :-0