VBA combinaison de deux worksheet selectionchange
t
Bonjour,
Je souhaite combiner deux worksheet selectionchange dans une même feuille, car j'ai un message d'erreur nom ambigu. Or quand je le fais moi même ça bug
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("K13")) Is Nothing Then
Call Affiche_Calendrier
End If
End Sub
et le deuxième:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ch As String, ch2 As String, pos As Long, i As Long
Dim plage, nomListe, numListe As Long, topIndex As Boolean
' plages avec sélection multiple dans listebox sur cette feuille
plage = Array("E13:E13")
' nom des listes dans la feuille Listes (en liaison avec les plages définies au-dessus)
nomListe = Array("Productsselection")
' plage concernée ?
For numListe = 0 To UBound(plage)
If Not Intersect(Target, Range(plage(numListe))) Is Nothing Then Exit For
Next numListe
If numListe <= UBound(plage) Then ' si plage de liste existant
' initialiser listbox
LbxListe.ListFillRange = "Listes!" & Worksheets("Listes").Range(nomListe(numListe)).Address ' A2:A17" ' [Listes!Ville].Address
LbxListe.Top = Target.Offset(1, 0).Top
LbxListe.Left = Target.Offset(0, 1).Left
LbxListe.MultiSelect = fmMultiSelectMulti
interne = True ' palliatif, EnableEvents ne marche pas
ch = ActiveCell
ch2 = [Séparateur] & ch & [Séparateur]
topIndex = False
' sélectionner selon contenu cellule
For i = 0 To LbxListe.ListCount - 1
If InStr(ch2, [Séparateur] & LbxListe.List(i) & [Séparateur]) > 0 Then
' l'item a été trouvé dans la cellule
LbxListe.Selected(i) = True
If Not topIndex Then
LbxListe.topIndex = i ' le 1er sélectionné doit être visible dans la textbox
topIndex = True
End If
End If
Next i
interne = False
' afficher textbox
LbxListe.Visible = True
Else
' ne plus afficher la textbox
LbxListe.Visible = False
End If
End Sub
Merci beaucoup pour votre aide.
bonjour,
Essaie :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ch As String, ch2 As String, pos As Long, i As Long
Dim plage, nomListe, numListe As Long, topIndex As Boolean
If Target.Count = 1 Then
If Not Application.Intersect(Target, Range("K13")) Is Nothing Then
Call Affiche_Calendrier
End If
End If
' plages avec sélection multiple dans listebox sur cette feuille
plage = Array("E13:E13")
' nom des listes dans la feuille Listes (en liaison avec les plages définies au-dessus)
nomListe = Array("Productsselection")
' plage concernée ?
For numListe = 0 To UBound(plage)
If Not Intersect(Target, Range(plage(numListe))) Is Nothing Then Exit For
Next numListe
If numListe <= UBound(plage) Then ' si plage de liste existant
' initialiser listbox
LbxListe.ListFillRange = "Listes!" & Worksheets("Listes").Range(nomListe(numListe)).Address ' A2:A17" ' [Listes!Ville].Address
LbxListe.Top = Target.Offset(1, 0).Top
LbxListe.Left = Target.Offset(0, 1).Left
LbxListe.MultiSelect = fmMultiSelectMulti
interne = True ' palliatif, EnableEvents ne marche pas
ch = ActiveCell
ch2 = [Séparateur] & ch & [Séparateur]
topIndex = False
' sélectionner selon contenu cellule
For i = 0 To LbxListe.ListCount - 1
If InStr(ch2, [Séparateur] & LbxListe.List(i) & [Séparateur]) > 0 Then
' l'item a été trouvé dans la cellule
LbxListe.Selected(i) = True
If Not topIndex Then
LbxListe.topIndex = i ' le 1er sélectionné doit être visible dans la textbox
topIndex = True
End If
End If
Next i
interne = False
' afficher textbox
LbxListe.Visible = True
Else
' ne plus afficher la textbox
LbxListe.Visible = False
End If
End Sub
A+