XL 2019 ComboBox dans des cellules différenciées avec la même liste

hemardjean

XLDnaute Occasionnel
Bonjour le forum

Je me tourne à nouveau vers vous, peut-on avec le code suivant utiliser La même ComboBox avec la même liste dans des cellules différenciées ex : en c2 et en e2.

J'ai essayé plusieurs façons mais aucune ne fonctionne.

(Code issu de l'excellent site de M. boisgontierj)


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect([c2:c2], Target) Is Nothing And Target.Count = 1 Then

a = Sheets("BD").Range("listeVilles").Value

Me.ComboBox1.List = a

Me.ComboBox1.Height = Target.Height + 3

Me.ComboBox1.Width = Target.Width

Me.ComboBox1.Top = Target.Top

Me.ComboBox1.Left = Target.Left

Me.ComboBox1 = Target

Me.ComboBox1.Visible = True

Me.ComboBox1.Activate

'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule

Else

Me.ComboBox1.Visible = False

End If

End Sub



Merci d'avance pour votre aide

cordialement
 

fanch55

XLDnaute Barbatruc
Bonjour,
Le code ci-dessous devrait convenir
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Me.ComboBox1
        If .Visible Then
            .Activate
            .Visible = False
        End If
        If Target.Address = "$C$2" Or Target.Address = "$E$2" Then
            .List = Sheets("BD").Range("listeVilles").Value
            .Height = Target.Height + 3
            .Width = Target.Width
            .Top = Target.Top
            .Left = Target.Left
            .Value = Target
            .Activate
            .Visible = True
            .DropDown ' ouverture automatique au clic dans la cellule
        End If
    End With
End Sub
 

hemardjean

XLDnaute Occasionnel

Bonjour fanch55​

Merci pour ta réponse cela fonctionne avec les deux cellules proposé, j'ai essayé d'adapter ton code pour ajouter d'autres cellules au niveau de
If Target.Address = "$C$2" Or Target.Address = "$E$2" Then

en ajoutant :Or Target.Address = "$F$2"

mais la liste déroulante ne s'affiche pas il me manque sûrement un élément.
J'aurais dû préciser dans la question qu'il y aurait 24 listes déroulantes du même type mais elles ne sont pas côte à côte.

Merci de ta réponse
Bien cordialement.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

En reprenant ton code initial, je te propose ceci :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim MesCellules As Range

    Set MesCellules = Range("C2,E2,G3,B5,E5")

    With Me.ComboBox1
        .Visible = False
        If Not Intersect(Target, MesCellules) Is Nothing And Target.Count = 1 Then
            .List = Sheets("BD").Range("listeVilles").Value
            .Height = Target.Height + 3
            .Width = Target.Width + 2
            .Top = Target.Top
            .Left = Target.Left
            .Value = Target
            .Activate
            .Visible = True
            .DropDown ' ouverture automatique au clic dans la cellule
        End If
    End With

End Sub
 
Dernière édition:

fanch55

XLDnaute Barbatruc
With Me.ComboBox1
.Visible = False
If Not Intersect(Target, MesCellules) Is Nothing And Target.Count = 1 Then
....
.DropDown ' ouverture automatique au clic dans la cellule
End If
End With
End Sub
[/code]
Salut @Marcel32 ,
Comme il peut y avoir eu des dropdowns,
si tu te contentes de mettre le visible à false à chaque selection,
tu risques d'avoir des rémanences de listes . 🤔
Sinon l'intersect est le bon choix .;)
 

hemardjean

XLDnaute Occasionnel
bonjour Marcel32, fanch55
je viens d'intégrer le code de Marce32 il fonctionne bien dans mon dossier test mais lorsque je l'intègre dans le dossier avec mes documents il me marque
"erreur de compilation type défini par l'utilisateur non défini"
pour plus de compréhension dans ma demande je vous rejoins le dossier.
Les cellules où je désire les listes sont situés en ligne 34, 39, 44, 51, et les colonnes A,F, J, N, R, V, AA.

Bien cordialement à tous les 2
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 885
Messages
2 093 259
Membres
105 660
dernier inscrit
moi46