Microsoft 365 lancer une macro en sélectionnant une cellule

  • Initiateur de la discussion Initiateur de la discussion MICHAEL
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Solution
Bonjour Michael,
Serait il possible d'exécuter une macro a partir d'une cellule sélectionnée,
Bien sur.
Un exemple en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D4]) Is Nothing Then
        Macro1
    ElseIf Not Intersect(Target, [D6]) Is Nothing Then
        Macro2
    ElseIf Not Intersect(Target, [D8]) Is Nothing Then
        Macro3
    ElseIf Not Intersect(Target, [D10]) Is Nothing Then
        Macro4
    End If
End Sub
Cette macro doit être impérativement dans la feuille concernée.
Bonjour Michael,
Serait il possible d'exécuter une macro a partir d'une cellule sélectionnée,
Bien sur.
Un exemple en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D4]) Is Nothing Then
        Macro1
    ElseIf Not Intersect(Target, [D6]) Is Nothing Then
        Macro2
    ElseIf Not Intersect(Target, [D8]) Is Nothing Then
        Macro3
    ElseIf Not Intersect(Target, [D10]) Is Nothing Then
        Macro4
    End If
End Sub
Cette macro doit être impérativement dans la feuille concernée.
 

Pièces jointes

Bonjour Michael,

Bien sur.
Un exemple en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D4]) Is Nothing Then
        Macro1
    ElseIf Not Intersect(Target, [D6]) Is Nothing Then
        Macro2
    ElseIf Not Intersect(Target, [D8]) Is Nothing Then
        Macro3
    ElseIf Not Intersect(Target, [D10]) Is Nothing Then
        Macro4
    End If
End Sub
Cette macro doit être impérativement dans la feuille concernée.
merci de ta réponse.
je vais voir cela un peu plus tard.......
 
Bonjour,
Vous avez deux macros événementielles très souvent utilisées :
1- On lance la macro quand on clique sur une cellule : Sub Worksheet_SelectionChange
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub ' Ne rien faire si clic sur plusieurs cellules'
    If Not Intersect(Target, Range("A1:B10")) Is Nothing Then ' Lancer macro si cellule dans Range'
               ' Code
    End If
End Sub
2- On lance la macro quand on modifie une valeur dans une cellule : Sub Worksheet_Change
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub ' Ne rien faire si modification de plusieurs cellules'
    If Not Intersect(Target, Range("A1:B10")) Is Nothing Then ' Macro lancer si cellule modifiée dans le range'
         ' La valeur de la cellule modifiée est dans Target'
         ' Code...
    Endif
End Sub
 
Bonjour @MICHAEL et Sylvain

Une autre variante si il y a beaucoup de "ifself" a traiter et qui devrait être plus rapide et plus lisible

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ' Ne rien faire si clic sur plusieurs cellules'
Application.EnableEvents = False
Select Case True
    Case Not Intersect(Target, Range("D4")) Is Nothing
        Macro1
    Case Not Intersect(Target, Range("D6")) Is Nothing
        Macro2
    Case Not Intersect(Target, Range("D8")) Is Nothing
        Macro3
    Case Else
        'Macro_XX si besoin
End Select
Application.EnableEvents = True
End Sub

Bien penser à prioriser l'ordre des "Case" du plus probable au moins probable pour optimiser le code au maximum 😉

Bonne lecture
 
Bonjour Phil,
Dans ce cas on peut être encore plus rapide en analysant Target.Address :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ' Ne rien faire si clic sur plusieurs cellules'
Select Case Target.Address
    Case "$D$4":    Macro1
    Case "$D$6":    Macro2
    Case "$D$8":    Macro3
    Case "$D$10":   Macro4
End Select
End Sub
Mais le but initial était juste de lancer une macro par clic sur cellule, d'où juste une macro simple.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
133
Réponses
11
Affichages
135
Réponses
3
Affichages
76
Réponses
17
Affichages
208
Réponses
3
Affichages
292
Retour