Macro VBA Excel

Bonjour à tous,

J'aurais besoin de votre aide...

Comment traduire en VBA :

Si il y a une Cellule "couleur Noire" dans la colonne "A:A"

Alors remplir de la meme couleur les cellules de la meme ligne que la cellule de "couleur Noire"

exemple :

Si Cellule noir en "A5"

---> Alors remplir en "Noir" la ligne "A5:L5"

Merci d'avance,
Cordialement
Laurent

5 réponses

  1. ;-)

    De rien !! ;-) Toi aussi... ;-)
    1
    1. ;-)

      if cells(5,1).interior.colorindex=vbblack then range(cells(5,1),cells(5,12)).interior.colorindex=vbblack

      De mémoire...

      ;-)
      0
      1. Salut WhiteFang,

        en fait j'ai trouvé ça qui marche :

        Sub noir()
        For Each rg In Range([a1], [A65536].End(xlUp))
        rg.Activate
        If rg.Interior.ColorIndex = 1 Then
        Range(Cells(rg.Row, 1), Cells(rg.Row, 12)).Interior.ColorIndex = 1
        End If
        Next rg
        End Sub

        Mais le problème c'est que ça marche seulemnt si les cellules sont non vide.
        Or les cellules en noir dans mon fichier sont vides...

        Aurais tu une solution.....Merci
        0
        1. Hello Laurent,

          Ta macro fonctionne bien (tu peux virer le rg.Activate qui ne sert à rien).
          Le problème est sans doute que tes cellules noires sont des cellules vides après les dernières données de ta colonne. Elles ne sont donc pas détectées par End(xlUp), qui recherche les données.

          Question : as-tu quand même, dans les lignes à noircir, des cellules qui contiennent des données ?
          0
      2. ;-)

        Sub toto()
        'Déclaration des variables
        Dim L, C, Lne, Col
        'Récup dans L et C de l'adresse de la dernière cellule de la feuille
        L = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
        C = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
        'Boucle sur les lignes
        For Lne = 1 To L
        'Test de l'intérieur de la cellule
        Select Case Cells(Lne, 1).Interior.ColorIndex
        'Si c'est NOIR
        Case Is = 1
        'Boucle sur les colonnes de la feuille
        For Col = 1 To C
        'Et application de la couleur
        Cells(Lne, Col).Interior.ColorIndex = 1
        Next
        End Select
        Next
        End Sub

        ;-)

        Vides ou pas vides... ;-)
        0
        1. Re WhiteFang,

          Euh... t'es sûr que t'as testé ?
          Quelques mélanges de pinceaux dans les SpecialCells...
          L'idée reste bonne, évidemment...

          Sub totoBis()
          'Déclaration des variables
          Dim L, Lne
          'Récup dans L de l'adresse de la dernière cellule de la feuille
          L = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
          'Boucle sur les lignes
          For Lne = 1 To L
          'Test de l'intérieur de la cellule
          Select Case Cells(Lne, 1).Interior.ColorIndex
          'Si c'est NOIR
          Case Is = 1
          'Noircissement de la plage
          Range(Cells(Lne, 1), Cells(Lne, 12)).Interior.ColorIndex = 1
          End Select
          Next
          End Sub
          0
        2. @Armojax;-)

          Tu crois que je mettrais du code ici sans l'avoir testé ? ;-))))))

          Au fait, tes modifs sur mon code sont inutiles...

          ActiveSheet : Pourquoi puisque le code est dans la feuille ? ;-) Et que de toutes façon, l'implicite est Activesheet ?

          Constante xlCellTypeLastCell : L'objet le plus simple à utiliser est ActiveCell, puisque le code se trouve dans la feuille...

          Et pour la boucle sur les colonnes, cela a l'avantage de lui montrer que ce code va s'adapter au contenu de sa feuille, pas sur une plage fixée, car il a déjà la solution plus haut pour l'adressage d'une plage...

          ;-)
          0
      3. Merci à tous les deux... :)

        Avec ça je devrais m'en sortir à merveille...

        @+
        et bonne journée !!
        0