Modification d'une macro

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

  • Planning Forum.xls
    125.5 KB · Affichages: 16
  • Planning Forum.xls
    125.5 KB · Affichages: 24
  • Planning Forum.xls
    125.5 KB · Affichages: 24

Modeste

XLDnaute Barbatruc
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.
 

Lolote83

XLDnaute Barbatruc
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:

Modeste

XLDnaute Barbatruc
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
 

JBARBE

XLDnaute Barbatruc
Re : Modification d'une macro

Bonjour à tous,

Peut-être ceci !

Si la périodicité a été oubliée, un message apparaît !

bonne journée

PS : Ma solution un peu en retard ( bonjour Modeste & lolote)
 

Pièces jointes

  • Planning Forum-1.xls
    133 KB · Affichages: 18
  • Planning Forum-1.xls
    133 KB · Affichages: 21
Dernière édition:

Cacahooete

XLDnaute Nouveau
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
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 452
dernier inscrit
hamzamounir