Macro VBA Excel

Laurent -  
WhiteFang Messages postés 2063 Statut Membre -
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. WhiteFang Messages postés 2063 Statut Membre 204
     
    ;-)

    De rien !! ;-) Toi aussi... ;-)
    1
  2. WhiteFang Messages postés 2063 Statut Membre 204
     
    ;-)

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

    De mémoire...

    ;-)
    0
  3. Laurent
     
    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. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      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
  4. WhiteFang Messages postés 2063 Statut Membre 204
     
    ;-)

    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. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      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
      1. WhiteFang Messages postés 2063 Statut Membre 204 > Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention  
         
        ;-)

        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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Laurent
     
    Merci à tous les deux... :)

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

    @+
    et bonne journée !!
    0