Macro remplissage couleur dans plusieurs cellules

  • Initiateur de la discussion Sally
  • Date de début
S

Sally

Guest
Bonjour,

J'aurais besoin d'aide pour mon planning, en fait j'ai créer une macro pour remplir une cellule de couleur selon la saisie, mais cette macro ne fonctionne que pour le première cellule dans ma feuille "été 2003".

Je n'arrive pas à la faire exécuter pour tout la ligne.


Merci pour votre aide.

Sally
 

Pièces jointes

  • CP2.zip
    24 KB · Affichages: 98
T

Ti

Guest
Sally, dans ton fichier, il n'y a aucune macro autre que celles permettant de sélectionner telle ou telle feuille. D'autre part, tes feuilles sont protégées par un mot de passe, ce qui ne facilite pas la recherche d'une solution. Aucune possibilité de voir ce que tu veux faire exactement dans ces conditions...
 
S

Sally

Guest
Je vous renvoie le fichier, c'est bizarre que vous ne trouvez pas le code dans vb editor.

La cellule qui fonctionne est dans la feuille "été 2003" F6.

Avez-vous la form de sélection des feuille au démarrage du fichier?

En espérant que cela fonctionne.....
 

Pièces jointes

  • CP.zip
    27.1 KB · Affichages: 117
  • CP.zip
    27.1 KB · Affichages: 113
  • CP.zip
    27.1 KB · Affichages: 117
T

Ti

Guest
normal que ça ne fonctionne que sur la première ligne, et même sur la première colonne, puisque ta macro événementielle ne réagit qu'au changement de la cellule F6. Comme je ne savais pas si tu voulais que ça réagisse à la première ligne de toutes les colonnes ou à toutes les lignes de toutes les colonnes, je t'ai mis 2 versions dans Worksheet_Change. Ainsi :

If Union(Target, Range("F6:GF6")).Address <> "$F$6:$GF$6" Then Exit Sub

ne réagira qu'au changement de la première ligne

'If Union(Target, Range("F6:GF46")).Address <> "$F$6:$GF$46" Then Exit
réagira au changement de toutes les lignes.
Si tu modifies la taille de ton tableau, n'oublie pas d'adapter les plages correspondantes dans cette macro.


Sub Couleur2(Target As Range)
With Target
.Offset(1, 0).Interior.ColorIndex = 0
.Offset(2, 0).Interior.ColorIndex = 0

If .Value = "0,5" Then
If MsgBox("Voulez-vous sélectionner le matin?", vbYesNo) = vbYes Then
.Offset(1, 0).Interior.ColorIndex = 3
Else
.Offset(2, 0).Interior.ColorIndex = 3
End If
Else 'valeur = 1
.Offset(1, 0).Interior.ColorIndex = 3
.Offset(2, 0).Interior.ColorIndex = 3
End If
End With
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Union(Target, Range("F6:GF6")).Address <> "$F$6:$GF$6" Then Exit Sub
'pour que ça fonctionne sur toutes les lignes
'If Union(Target, Range("F6:GF46")).Address <> "$F$6:$GF$46" Then Exit Sub

If Target.Value = "0,5" Then
Couleur2 Target
ElseIf Target.Value = "1" Then
Couleur2 Target
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06