Erreur : Nom ambigu détecté Worksheet_SelectionChange

Bonjour tout le monde,

ceci est mon premier message sur un forum, j'espère y trouver un.e sauveur/se

Voici mon besoin: pouvoir, dans 2 colonnes différentes sur une même feuille, activer des cellules proposant des choix multiples à cocher (exemples: colonne A: je peux sélectionner à la fois pierre, papier, ciseaux, colonne B: je peux sélectionner à la fois choux, hiboux, genoux, ou même un sur deux peu importe). A noter que les résultats d'une colonne n'influence pas l'autre, elles sont complètement indépendantes.

J'ai donc créé 1 première list box, et copié le code venant d'un autre fichier trouvé sur le net (peut être pas la bonne idée ?). J'ai changé les items pour que cela fasse bien appel à mes cellules, puis ajouté donc une 2e listbox sur ce même modèle.

J'obtiens l'erreur "Nom ambigu détecté sur Worksheet_SelectionChange).

Je suis plus que débutante en VBA ! J'ai compris que je ne pouvais pas avoir 2 fois cette formulation, mais ne sais pas quoi modifier pour que mes 2 list box fonctionnent en même temps.

En PJ une copie du code.

Si quelqu'un peu m'éclairer, un grand merci par avance

erreur excel

Bonjour,

Un "vrai" fichier est plus utile qu'une capture d'écran...

Effectivement, la syntaxe de votre code relève un peu de la science fiction !

Worksheet_SelectionChange est une macro qui se déclenche automatiquement lors d'un changement de sélection par l'utilisateur. Ce code est placé dans le module de la feuille en question, et il est unique (on ne peut avoir 2 macros distinctes utilisant cet événement).

On ne peut imbriquer 2 macros l'une dans l'autre de cette manière : en clair, Private Sub doit être suivi d'un End Sub avant d'ouvrir un nouveau Private Sub (qui délimite une autre macro).

Merci pour ce retour rapide !

En clair si je comprends bien, je ne peux pas faire ce que je souhaite ? A savoir 2 sélecteurs à choix multiples, dans 2 colonnes différentes et sur une même feuille... ?

Pardon pour la capture d'écran, je suis bloquée par un message pour le forum si je souhaite copier directement le code ici, même avec le raccourci </>, le contenu est considéré comme un lien

En clair si je comprends bien, je ne peux pas faire ce que je souhaite ? A savoir 2 sélecteurs à choix multiples, dans 2 colonnes différentes et sur une même feuille... ?

Je n'ai pas dit ça, par contre ce que tu as écrit dans ton code est complètement incohérent.

Pardon pour la capture d'écran, je suis bloquée par un message pour le forum si je souhaite copier directement le code ici, même avec le raccourci </>, le contenu est considéré comme un lien

Tu peux joindre directement ton fichier contenant le code, pas juste copier coller le code. Un fichier nous permettrait de comprendre un peu mieux ce que tu souhaites faire, car en ce qui me concerne, ça n'est pas très clair juste à partir d'un aperçu de ton code !

En effet, ce qui est évident pour moi ne l'est pas pour les autres

Voici mon fichier que j'ai simplifié.

Les listbox sont sur la feuille "Description Scénario" (colonnes H et G). Les données pour affichage dans les listbox sont sur la feuille "Paramètres". Je ne sais pas si je suis très claire

Pour le moment cela fonctionne bien en colonne H, mais pas sur la G.

Infiniment merci !

Je n'ai pas eu le temps de trop creuser le sujet, et n'ayant jamais utilisé de contrôles en dehors d'un formulaire, je ne suis pas très familier avec le code associé... J'ai donc simplement regroupé vos 2 macros dans une unique macro événement (ce qui a l'air de fonctionner, bien que je ne trouve pas ça très pratique) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  'Listbox 2
  If Not Intersect([H13:H28], Target) Is Nothing Then
    Me.ListBox2.MultiSelect = fmMultiSelectMulti
    Me.ListBox2.List = Sheets("Paramètres").Range("I9:I18").Value
    a = Split(Target, " ")
    If UBound(a) >= 0 Then
      For i = 0 To Me.ListBox2.ListCount - 1
        If Not IsError(Application.Match(Me.ListBox2.List(i), a, 0)) Then Me.ListBox2.Selected(i) = True
      Next i
    End If
    Me.ListBox2.Height = 150
    Me.ListBox2.Width = 100
    Me.ListBox2.Top = Target.Top
    Me.ListBox2.Left = Target.Left + Target.Width
    Me.ListBox2.Visible = True
  Else
      Me.ListBox2.Visible = False
  End If
  'Listbox 1
  If Not Intersect([G13:G28], Target) Is Nothing Then
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
    Me.ListBox1.List = Sheets("Paramètres").Range("E9:E14").Value
    a = Split(Target, " ")
    If UBound(a) >= 0 Then
      For i = 0 To Me.ListBox1.ListCount - 1
        If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
      Next i
    End If
    Me.ListBox1.Height = 150
    Me.ListBox1.Width = 100
    Me.ListBox1.Top = Target.Top
    Me.ListBox1.Left = Target.Left + Target.Width
    Me.ListBox1.Visible = True
  Else
      Me.ListBox1.Visible = False
  End If
End Sub

Merci pour le temps passé !

Je pense que l'on est pas loin

En effet, au clic dans la cellule les multichoix apparaissent bien maintenant dans les 2 colonnes concernées, mais une fois sélectionnés, ils ne s'incrémentent plus sous forme de texte dans la cellule. Etant plus que débutante en VBA, je ne sais pas quelle est la ligne qui donne cette instruction dans le code

J'ai ajouté 2 instructions pour chaque ListBox

Private Sub ListBox1_Change()

, ça a l'air de fonctionner. J'imagine que c'est de la bidouille, mais ça tourne

Vraiment un très grand merci, j'aurai compris comment s'organise les grandes parties !

Bonne soirée !

Rechercher des sujets similaires à "erreur nom ambigu detecte worksheet selectionchange"