MacroAutoexec sur toutes les cellules d'une sélection après un copier/coller [Résolu]

Signaler
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007
-
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007
-
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

5 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
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 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
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 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007

éééééééééééééééééééénorme!!!!
Merci beaucoup de ta rapidité et de ton efficacité!!!

@ bientôt

Lycaon
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007

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
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007

Merci beaucoup.


Je débute donc je n'ai pas encore les réflexes qui tuent... :-)


@ bientôt


Lycaon