Zone de Liste déroulante qui bug

Bonjour le forum !

Je suis novice en VBA et je consulte souvent le forum quand j'ai un problème mais là je cale

Je ne peut malheureusement pas joindre le fichier mais les explications devrais être assez claire.

J'ai une "zone de liste déroulante", quand je déroule la liste et que je vais sur un des noms sa exécute ma macro comme je le souhaite. Mais quand je clic pour déroulé la liste et que je ne sélectionne pas un autre nom (par exemple je clic en dehors de la liste pour la rabattre), La liste détecte comme si j'avais à nouveau cliqué sur la même nom et me relance ma macro. Alors que je voudrais que la liste se rabatte sans relancé ma macro à chaque fois. J’espère avoir était assez claire

Voici mon petit bout de code que j'ai trouvé sur le net qui me permet d'exécuter ma macro :

Sub Maliste_change()
On Error Resume Next
Dim choix As Byte
choix = Range("P6").Value
Select Case choix
Case 1
Case 2
Case 6: Macro1
End Select
End Sub

Merci d'avance pour l'aide que vous m'apporterez

Bonsoir,

en faite je suppose que votre sub est "lancée" dès que vous demandez de la dérouler.

Donc même si vous ne choisissez rien, la valeur de la cellule P6 est égal à sa valeur précédente donc la macro est lancée...

Il faut donc que votre macro mette quelque part la valeur "passée" de la cellule P6, ce peut être une variable VBA ou une cellule d'une feuille.

Le fichier joint est fait sur ce type d'idée.

Sinon il y a aussi l'option UNDO qui permet de revenir un pas en arrière sur ce qui s'est passé sur la feuille, ceci toujours sur la surveillance événementielle de la feuille :

on détecte la modification de P6

on met en mémoire la nouvelle valeur

on fait un UNDO

on met en mémoire l'ancienne valeur

on compare l'ancienne valeur et la nouvelle valeur

si elles sont identique on sort de la macro de surveillance

sinon on lance la macro mais avant on remet P6 = la nouvelle valeur

@ bientôt

LouReeD

20essai-loureed.xlsm (13.44 Ko)

Slt LouReeD !

Merci d'avoir pris le temps de te pencher sur mon problème !!

Avec ton fichier j'ai pu comprendre un peux mieux le problème que j'avais et j'ai réussi a corriger le bug qui n'est plus qu'un mauvais souvenir !!

Un grand merci à toi ! bonne soirée !

Bonjour,

si vous avez modifié votre code, alors faites nous en profiter !! c'est ça le forum

Merci de votre merci et @ bientôt

LouReeD

Slt LouReeD

Effectivement, tu as raison ! je pense que beaucoup de personne peuvent potentiellement m'aider ici alors je vais mettre mon bout de code de novice en espérant que sa ne pique pas trop les yeux lol.

Entre temps j'ai encore modifier le code ! il est fait pour que quand on sélectionne une valeur dans la liste, celle ci exécute une macro prédéfinie.

Sub Liste_1()
    On Error Resume Next

    With Worksheets("Feuil1").Shapes("Zone combinée 13").ControlFormat 'nom de la liste
        Sheets("Feuil1").Range("C10") = .List(.ListIndex)
    End With

If Not Intersect(Target, Range("C10")) Is Nothing Then
        If Range("C10").Value <> Range("C11").Value Then
            Range("C11").Value = Range("C10").Value

    Dim valeur As String
    valeur = Sheets("Feuil1").Range("C10")

    If valeur = "test1" Then 'si cette valeur est sélectionné dans la liste alors
        Call test_1 'on lance cette macro
    ElseIf valeur = "test2" Then 'si cette valeur est sélectionné dans la liste alors
        Call test_2 'on lance cette macro (pour ne pas avoir trop de if si la liste contient beaucoup de valeur)
    Else
        Exit Sub 'si une valeur est sélectionné dans la liste et qu'aucune macro n'y est attacher (ci-dessus), alors on quit le sub
    End If
End If
End If
End Sub

j’espère pouvoir aider certains novice comme moi !

Bonsoir et bonne année !

Merci @ vous et @ bientôt

LouReeD

Rechercher des sujets similaires à "zone liste deroulante qui bug"