Problème pour gérer la modification de cellules en VBA

Bonjour à tous.

J'ai une petite macro qui permet de modifier la couleur de fond d'une cellule en fonction d'une couleur qui a été définies dans une autre feuille du classeur. La macro est comme ci dessous:

' retirer la protection de la feuille

ActiveSheet.Unprotect

   a = 50

'si on supprime un libellé dans la feuille -> mettre en blanc le fond

   If Target = "" Then
         ligne = Target.Row
           colo = Target.Column
            Feuil1.Cells(ligne, colo).Select
               With Selection.Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With

                ' protéger la feuille

        ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFiltering:=True
            Exit Sub
   End If

 'si on ajoute un libellé dans la feuille -> mettre en couleur le fond en fonction du choix

   Do While Target <> Feuil3.Cells(a, 1)
        If Feuil3.Cells(a, 1) = "" Then
            Exit Sub
       End If
       If Target = Feuil3.Cells(a, 2) Then
           Exit Do
       End If
       a = a + 1
   Loop

  ligne = Target.Row
   colo = Target.Column
   Feuil1.Cells(ligne, colo).Interior.Color = Feuil3.Cells(a, 1).Interior.Color

' protéger la feuille

    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFiltering:=True

Le code ci dessus marche très bien ... tant que l'on modifie cellule par cellule les données de la feuille.

Si l'on modifie en masse, par exemple, sélectionner une zone de 6 cellules et que l'on fait ctrl+Entrée, ou lors des copier coller de plusieurs cellules, la macro ne fonctionne pas. (Normal puisque l'on utilise le code

Cells(ligne, colo)

. J'aurais aimé travailler avec le Target, qui représente une cellule ou un plage de cellules, et que je récupère au tout début de ma macro (Target étant la cellule ou la zone de cellule modifiée(s)) mais je ne sait pas si on peut réutiliser directement Target et surtout, si c'est possible, comment ?

Je précise que ma macro est déclenchée dès que la feuille est modifiée.

Merci beaucoup de votre aide sur ce sujet.

Bonne journée à tous.

Onafe57.

Bonjour Onafe57,

un petit fichier, peut-être ?

A+

Bonjour,

Avec :

Dim cel As Range
For Each cel In Target.Cells
  'Traitement de chaque cellule de target
Next cel

Bonjour.

Merci pour vos réponses.

Je ne peux pas envoyer le fichier tel quel car c'est un fichier du boulot et je ne souhaite pas trop le diffuser en l'état. Je vais essayer de coller juste ce bout de code dans un excel vierge pour essayer de vous transférer le code dans un environnement fonctionnel.

Et je vais aussi essayer la solution proposée pour voir si ça s'applique ...

Je reviens vers vous rapidement.

A plus.

Onafe57.

Rebonsoir à tous !

Génial, la solution de Patrice33740 a fonctionné à merveille !

Merci beaucoup !

Bonne soirée et à bientôt !

Onafe57

Rechercher des sujets similaires à "probleme gerer modification vba"