Modification d'une macro

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 !

Cacahooete

XLDnaute Nouveau
Bonjour,

J'ai un petit soucis de VBA. J'ai une macro dans mon fichier (qui m'a gentillement été créee par un membre de ce forum) qui me permet de mettre la case en vert lorsque je tape quelque chose dans une cellule et qui me met une case rouge 12 mois plus tard.
Ce que je voudrai à la place, c'est la même chose sauf qu'il y a des éléments que je n'avais pas pris en compte... Plutôt que 12 mois, je voudrais que ma macro prenne en compte ma périodicité (soit ma colonne C qui représente des mois).
Et également que cette macro fonctionne uniquement sur mon côté "calendrier" car lorsque je tape une périodicité ou un nouveau secteur, ça me met également la case en vert. Ce que j'aimerai éviter.

Merci d'avance pour votre aide.

Cordialement,

Alizé
 

Pièces jointes

Re : Modification d'une macro

Bonjour Cacahooete,

À première vue, il me semble que tu peux adapter ta procédure Worksheet_Change de la manière suivante (si j'ai bien compris!?):
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column < 5 Then Exit Sub
     If Target <> "" Then
        Target.Interior.ColorIndex = 10
        Target.Offset(0, Cells(Target.Row, 3).Value).Interior.ColorIndex = 3
     Else
        Target.Interior.ColorIndex = xlNone
        Target.Offset(0, Cells(Target.Row, 3).Value).Interior.ColorIndex = xlNone
     End If
End Sub

Attention cependant que le "retour à aucun remplissage" a une influence sur les couleurs que tu as utilisées dans ta partie calendrier!
Précise si tu as besoin de nous pour les préserver.
 
Re : Modification d'une macro

Salut,
En remplaçant ton code par celui-ci, cela devrait fonctionner
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 4 Then
        xPériodicité = Cells(Target.Row, "C")
        If Target <> "" Then
            Target.Interior.ColorIndex = 10
            Target.Offset(0, xPériodicité).Interior.ColorIndex = 3
         Else
            Target.Interior.ColorIndex = xlNone
            Target.Offset(0, xPériodicité).Interior.ColorIndex = xlNone
         End If
    End If
End Sub

EDIT : Salut Modeste, trop rapide pour moi, mais je me suis posé la même question que toi concernant les xlNone qui du coup met la cellule à blanc
@+ Lolote83
 
Dernière édition:
Re : Modification d'une macro

Re,
Salut Lolote83,

Cette version restitue la couleur en cas d'effacement (pas le temps de chercher maintenant si on peut "condenser" l'écriture, mais ça semble fonctionner)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column < 5 Then Exit Sub
     If Target <> "" Then
        Target.Interior.ColorIndex = 10
        Target.Offset(0, Cells(Target.Row, 3).Value).Interior.ColorIndex = 3
     Else
        Target.Interior.Color = Cells(2, Target.Column).Interior.Color
        Target.Offset(0, Cells(Target.Row, 3).Value).Interior.Color = Cells(2, Target.Column + Cells(Target.Row, 3)).Interior.Color
     End If
End Sub
 
Re : Modification d'une macro

Merci beaucoup à tous pour ces précieux conseils. C'est top et vous êtes au top. Quand j'en serai à ce niveau dans le BVA, je serai contente 🙂 Malheureusement, ce n'est pas pour demain.
Pour ce qui est de la couleur, merci, ça peut servir mais finalement, ce qui nous posait problème nous permet de voir s'il y a eu une modification du fichier.
Merci encore
 
- 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
4
Affichages
156
Réponses
30
Affichages
273
Réponses
5
Affichages
66
Retour