Déclenchement Macro Evènementielle + Liste Déroulante

ljoue

XLDnaute Junior
Bonjour à tous,

J'ai dans la cellule "A1" un menu déroulant contenant une liste de noms . J'aimerais que lorsque je choisie un autre nom de la liste qu'une macro (Macro1) se déclenche automatiquement.

J'ai essayé avec le code suivant mais sans succès :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Select = "$A$1" Then
Application.Run "Macro1"
End If
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance.

@+
Laurent
 

GIBI

XLDnaute Impliqué
Re : Déclenchement Macro Evènementielle + Liste Déroulante

bonjour,

voici une solution


controle de la saisie colonne 1

Private Sub Worksheet_Change(ByVal Cellule As Range)
If Cellule.Column <> 1 Then Exit Sub
'
If Cellule.Value <> "" Then
With Sheets("Feuil2").Range("Valeur")
Set c = .Find(Cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
MsgBox (Cellule.Value & "pas trouvé") ===> appel macro 1
Else
MsgBox (Cellule.Value & "OK")

End If
End With
End If
End Sub

GIBI
 

Pièces jointes

  • ctrl.xls
    23 KB · Affichages: 101
Dernière édition:

ljoue

XLDnaute Junior
Re : Déclenchement Macro Evènementielle + Liste Déroulante

Salut GIBI,

Merci pour ta solution.

En revanche avec cette méthode la macro se déclenche lorsque la valeur de n'importe qu'elle cellule de la colonne A est modifiée et si cette valeur est <> de "".

Solution intéressante mais qui ne s'applique pas ds mon cas.

Merci et @+
 

GIBI

XLDnaute Impliqué
Re : Déclenchement Macro Evènementielle + Liste Déroulante

Salut ljoue,

je n'ai pas compris ta remarque, pour moi la solution s'applique mais le code est a adapter, par exemple si tu ne veux traiter que la cellule A1 (ligne 1 colonne 1) il suffit de le tester, de remplace le msgbox par un Call TaMacro
si tu veux traiter même en cas d'absence de saisie tu enlève "If Cellule.Value <> "" Then .. else/endif"



de plus, si ta macro modifie une cellule (A1 ou autre) pour éviter de boucler sur l'événement
je t'ai ajouté

Application.EnableEvents = False '**** bloquer les événements le temps du traitemen

Application.EnableEvents = True ' réactiver les événements




Private Sub Worksheet_Change(ByVal Cellule As Range)
If Cellule.Column <> 1 Or Cellule.Row <> 1 Then Exit Sub '<=== cellul # A1
'
Application.EnableEvents = False '**** bloquer les événements le temps du traitemen

If Cellule.Value <> "" Then
With Sheets("Feuil2").Range("Valeur")
Set c = .Find(Cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
MsgBox (Cellule.Value & "pas trouvé")
Else
MsgBox (Cellule.Value & "OK")

End If
End With
else
msgbox ("absence de saisie")
End If

Application.EnableEvents = True ' réactiver les événements

End Sub

Mais je n'ai peut être pas compris ta question
GIBI
 
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 pb formule vba
Réponses
15
Affichages
820

Statistiques des forums

Discussions
312 493
Messages
2 088 949
Membres
103 989
dernier inscrit
jralonso