Créer plusieurs macros événements VBA sur une seule worksheet

Bonjour,

J’essaie de créer un événement qui colore des cellules si l’année est inférieur à 2020.
j’ai créé une macros évènement sur la worksheet (sub WorkSheet_Change(ByVal Target As Range)) pour la collonne B. Ça marche très bien mais j’aimerais faire la même chose sur la même feuille pour la colonne C sauf que je n’arrive pas puisque je ne peux pas renommer le sub : Worksheet_Change.

Est ce que vous savez comment faire pour créer plusieurs macros événement, de manière à ce que cela s’exécute automatiquement ?

Merci beaucoup pour votre aide

PS : voilà ma macros :

Private Sub WorkSheet_SelectionChange(ByVal Target As Range)

For x = 5 To 1000

If Cells(x, 6) > 1 And Cells(x, 6) < 2020 Then

Cells(x, 6).Interior.ColorIndex = 3

ElseIf Cells(x, 6) >= 2020 Then

Cells(x, 6).Interior.ColorIndex = 2

ElseIf Cells(x, 6) = 0 Then

Cells(x, 6).Interior.ColorIndex = 2

End If

Next x

End Sub

Bonjour,

Pourquoi vouloir réinventer la roue ? Excel dispose déjà de fonctionnalité de mise en forme conditionnelle (MFC).

Concernant votre macro, il ne peut y avoir qu'une seule macro par type d'évènement, mais rien ne vous empêche de placer successivement des codes qui s'appliquent à des plages différentes et/ou selon des conditions différentes dans une même macro.

Enfin, l'intérêt d'une macro évènementielle et aussi de limiter l'action à la plage modifiée (nommée Target). Dans ce cas, inutile de balayer à chaque fois toutes les cellules (ce qui pompe inutilement des ressources).

D’accord,

Merci beaucoup pour votre réponse,

A vrai dire, j’ai essayé la mise en forme conditionnel, mais cela ne marche pas exactement comme je le voudrais.

Encore merci,

Bonne fin de journée

A vrai dire, j’ai essayé la mise en forme conditionnel, mais cela ne marche pas exactement comme je le voudrais.

C'est à dire ? Pouvez vous joindre un fichier avec vos essais + un onglet avec le résultat attendu "fait main" ?

Bonjour, pas trop compris non plus l'explication Colonne B alors que le code vba fait une boucle sur la colonne 6 ?

Sinon Pédro donne la solution ; vos boucles l'une derrière l'autre dans la même sub

For x = 5 To 1000
If Cells(x, 6) > 1 And Cells(x, 6) < 2020 Then
Cells(x, 6).Interior.ColorIndex = 3
ElseIf Cells(x, 6) >= 2020 Then
Cells(x, 6).Interior.ColorIndex = 2
ElseIf Cells(x, 6) = 0 Then
Cells(x, 6).Interior.ColorIndex = 2
End If
Next x

For j = 5 To 1000
If Cells(j, 7) > 1 And Cells(j, 7) < 2020 Then
Cells(j, 7).Interior.ColorIndex = 3
ElseIf Cells(j, 7) >= 2020 Then
Cells(j, 7).Interior.ColorIndex = 2
ElseIf Cells(j, 7) = 0 Then
Cells(j, 7).Interior.ColorIndex = 2
End If
Next j
End Sub

J’ai supprimé mes essaies pour la MFC mais ce n’est pas grave merci quand même 😉

Merci à vous deux pour votre aide

Rechercher des sujets similaires à "creer macros evenements vba seule worksheet"