Mettre plusieurs ligne de couleur selon la sélection

Résolu
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai une macro affecté à un Userform, qui mets en couleur la ligne sélectionné entre la colonne A et N.

Pour le moment, ma macro fonctionne mais si je sélectionne plusieurs lignes, il applique la couleurs seulement sur la première ligne. J'ai essayé le code suivant mais sans succès!

Comment puis-je modifier mon code pour qu'il applique la couleur sur toutes les lignes sélectionnées.

Voici mon code:
Private Sub OptionButton1_Click()


ActiveSheet.Unprotect

Dim c As Range
Dim maplage As Range
Dim l As Long

l = ActiveCell.Row

Set maplage = Range("a" & l & ":N" & l)

If TypeName(Selection) = "Range" Then
    For Each c In Selection
        maplage.Interior.ColorIndex = 3
    Next
End If

ActiveSheet.Protect
        
End Sub

2 réponses

  1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
     
    Première piste trouvé, j'ai passé un espion sur la valeur de "c" et il se déplace d'une colonne à l'autres sur la même ligne jusqu'au bout (colonne N) et sort de la macro.

    Pourquoi, il ne se déplace pas sur la prochaine ligne?

    Merci!
    0
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    Ceci ne colore en rouge que la plage sélectionnée
    Private Sub OptionButton1_Click()
        Dim c As Range
        Dim l As Long
        ActiveSheet.Unprotect
        maplage = Selection.Address
        Range(maplage).Interior.ColorIndex = 3
        ActiveSheet.Protect
    End Sub

    cdlt
    0
    1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonjour Frenchie83!

      Effectivement! Ça colore en rouge la plage sélectionnée.

      Mais ce que je veux, c'est que dans la sélection qu'il colore en rouge toute les lignes entre les colonnes A et N sans avoir à sélectionner toute la ligne manuellement.

      Merci!
      0
    2. PlacageGranby Messages postés 402 Statut Membre 26
       
      Bonjour

      "colore en rouge toute les lignes entre les colonnes A et N"

      C'est que entre A et N,,, ce sont des colonnes,,, (A.B,C,D,E,,,,)

      Tu as défini la variable "L" pour les ligne. "L" est assigné avec ActiveCell.Row et c'est tout.
      La seule ligne de spécifiée c'est la ligne de la cellule active.

      Si tu veux boucler sur plusieurs lignes... lequelles ?
      0
      1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1 > PlacageGranby Messages postés 402 Statut Membre
         
        Bonjour PlacageGranby!

        Ce que je veux, c'est que lorsque je sélectionne une plage de cellules sur plusieurs lignes (ex: les cellules N18, N19, N20) qui correspond au ligne 18, 19 et 20. Que la macro me colore les lignes 18,19 et 20 entre la colonne A et N en rouge. Les cellules sélectionnées peuvent être dans n'importe qu'elle colonne, elle ne sert qu'à déterminer la ligne à colorer.

        J'espère que c'est clair!?

        Merci!
        0
    3. PlacageGranby Messages postés 402 Statut Membre 26
       
      Bonjour,

      Au plus simple : ceci pourrait être fonctionnel

      Sub  OptionButton1_Click()
      
      ActiveSheet.Unprotect
      
      Dim LDebut, LFin As Long
      
      LDebut = Selection.Row
      LFin = LDebut + Selection.Rows.Count - 1
      Range("A" & LDebut & ":N" & LFin).Interior.ColorIndex = 3
      
      ActiveSheet.Protect
      
      End Sub
      0
      1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1 > PlacageGranby Messages postés 402 Statut Membre
         
        Merci beaucoup PlacageGranby!

        C'est exactement ça! C'est fou comme le code est court!

        Je me compliquais la vie! C'est ça quand on débute!

        Encore merci!
        0