Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365lancer une macro en sélectionnant une cellule
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 !
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.
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.
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,
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
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 😉
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.
- 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