MacroEvenementielleSelonValCell

M

Moa

Guest
Salut à tous !

Voilà, j'ai un problème avec une macro évènementielle:

En E3, j'ai une liste déroulante, avec trois choix : 1,2,3

J'ai trois macros appelées macro1, macro2, macro3.

Et j'aimerais que lorsque je sélectionne "1" en E3 alors que "Macro1" s'exécute et idem pour le 2 et le 3.

Voilà mon code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("E3")) Is Nothing Then
If ActiveCell.Value = 1 Then Call Macro1
If ActiveCell.Value = 2 Then Call Macro2
If ActiveCell.Value = 3 Then Call Macro3
End If
End Sub

Et quand je clique dans la cellule, je n'ai pas le temps de sélectionner un chiffre, que la macro s'exécute, selon le dernier chiffre en mémoire.

J'ai essayé aussi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell(3, 5).Value = 1 Then Call Macro1
If ActiveCell(3, 5).Value = 2 Then Call Macro2
If ActiveCell(3, 5).Value = 3 Then Call Macro3
End Sub

Mais là, rien ne se passe...!!!

J'ai essayé aussi :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address = "$E$3" Then
If ActiveCell.Value = 1 Then Call Macro1
If ActiveCell.Value = 2 Then Call Macro2
If ActiveCell.Value = 3 Then Call Macro3
End If
End Sub

Mais, là, il se passe la même chose que pour le premier code.

J'ai essayé plein de petits codes, mais en vain;

Donc, si un chef du Cba passe par là, ce serait vraiment sympa de me briffer un peu.

Mille merci

@ +

Moa
 
L

LaurentTBT

Guest
Bonsoir Moa.

Et si tu faisais exactement la même chose, mais avec la macro événementielle Worksheet_Change? Cela permettrait de lancer la macro que lorsque le nouveau chiffre aura été saisi. (par rapport à ton premier code, il faut juste changer activecell par target)

Bonne soirée. Laurent.
 
J

JPH

Guest
Selectionner ou taper, pour taper :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lig = Target.Row
col = Target.Column
If lig = 3 and col = 5 Then
Application.OnKey "1" ,"macro1"
else
Application.OnKey "1"
end if

end sub

essaye celà

Cordialement
 
M

Moa

Guest
Salut LaurentBT !

Merci à toi.

J'avais en effet essayé avec Worksheet_Change, et cela ne fonctionnait pas.

Mais par contre avec Target à la place de "ActiveCell.Value", cela marche impec.

Donc en résumé la bonne macro devient :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e3")) Is Nothing Then
If Target.Value = 1 Then Call Macro1
If Target.Value = 2 Then Call Macro2
If Target.Value = 3 Then Call Macro3
End If
End Sub

Par contre dans mon appli réelle, j'ai trois listes de choix et donc neuf macros s'y afférant.

J'ai donc fait des tests avec une deuxième liste de choix et trois autres macros, et voilà ce que ça donne..et surtout..ça marche...héhéhé!

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e3")) Is Nothing Then
If Target.Value = 1 Then Call Macro1
If Target.Value = 2 Then Call Macro2
If Target.Value = 3 Then Call Macro3
End If
If Not Intersect(Target, Range("G3")) Is Nothing Then
If Target.Value = 1 Then Call Macro4
If Target.Value = 2 Then Call Macro5
If Target.Value = 3 Then Call Macro6
End If
End Sub


Donc mille merci à toi LaurentBT...!!

@ +

Moa
 
L

LaurentTBT

Guest
Juste une petite question au passage: On Key se déclenche si on tape sur 1,2,ou3. Mais si le choix dans la liste de Moa se fait par la souris, est-ce que cela fonctionnera aussi?

Bonne nuit à tous.
 

Discussions similaires

Réponses
2
Affichages
145

Statistiques des forums

Discussions
312 345
Messages
2 087 483
Membres
103 557
dernier inscrit
gerard.messerlin68@orange