lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007
-
12 oct. 2006 à 13:24
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007
-
12 oct. 2006 à 15:47
Salut à tous,
J'ai écrit une macro Change qui modifie la couleur du fond en fonction de la valeur de la cellule. Jusque là tout va bien...
PB : quand je fais un copier coller, la macro ne s'éxécute que sur la première cellule de la sélection et je dois faire "semblant" de modifier le contenu des autres cellules pour que la macro réagisse (ce qui revient à faire le travail de la macro).
Comment faire pour qu'elle s'éxécute sur toutes les cellule ?
Voilà mon code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Set Target = ActiveCell (j'avais une erreur 13 donc j'ai rajouté cette ligne et c'est celle qui pose problème)
Select Case Target.Value
Case Is = "V.High"
...
Target.Interior.ColorIndex = 2
End Select
End Sub
Merci à tous
Lycaon
A voir également:
MacroAutoexec sur toutes les cellules d'une sélection après un copier/coller
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 oct. 2006 à 13:44
Salut,
C'est normal que cela n'agisse que sur une cellule car tu dis
Set Target = ActiveCell ActiveCell ne represente qu UNE seule cellule
Tiens essaies ceci : cela colore en rouge les cellules vides.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim UnCell As Range
For Each UnCell In Selection
Select Case UnCell.Value
Case Is = "": UnCell.Interior.Color = vbRed
End Select
Next
End Sub
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 oct. 2006 à 15:10
Salut,
Car tu n'utilses plus Target.
Peu Etre alors devrait tu faire un mixe des deux du style (selon le Count de selection) puis ajouter une procédure qui teste pour
UNE cellule)
Tiens essaie ceci
Private Sub Worksheet_Change(ByVal Target As Range)
Dim UnCell As Range
If Selection.Count > 1 Then
For Each UnCell In Selection
Call TesteCellule(UnCell)
Next
Else
Call TesteCellule(Target)
End If
End Sub
Private Sub TesteCellule(UnCell As Range)
Select Case UnCell.Value
Case "test": UnCell.Interior.Color = vbBlue
Case Is = "": UnCell.Interior.Color = vbRed
End Select
End Sub
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007 12 oct. 2006 à 15:01
Euh, en fait j'ai un petit problème.
Quand je fais tourner ton truc, ça marche parfaitement sur les copier-coller mais ça ne marche plus quand je modifie une cellule dans ma page.
Est ce que tu saurais d'où ça vient ?
Merci
Lycaon
Vous n’avez pas trouvé la réponse que vous recherchez ?