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

Résolu
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007 - 12 oct. 2006 à 13:24
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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

5 réponses

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

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

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

 

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

@+,   Ju£i?n
3
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007
12 oct. 2006 à 13:56
éééééééééééééééééééénorme!!!!
Merci beaucoup de ta rapidité et de ton efficacité!!!

@ bientôt

Lycaon
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007
12 oct. 2006 à 15:47
Merci beaucoup.


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


@ bientôt


Lycaon
0
Rejoignez-nous