IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier uniquement les Couleurs de fond des cellules sur Excel 2007


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Points : 24
    Points
    24
    Par défaut Copier uniquement les Couleurs de fond des cellules sur Excel 2007
    Bonjour à tous(tes),
    Je dispose d'un tableau Excel et je souhaite copier les couleurs de fond des cellules à savoir :
    Je dispose par exemple d'une plage de cellules ''A1-Q1'' dont je souhaiterai reproduire les couleurs sur les 12 lignes en dessous, ou si préferez : recopier sur les 12 lignes du dessous juste les couleurs de fond.
    J'ai essayé avec ''mise en forme conditionnelle'' mais ça ne fonctionne pas. Alors est il possible de développer une macro pour que la tache puisse être automatisée?

    Merci par avance
    Fher

  2. #2
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour

    Quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim CompA As Byte
    Dim CompB As Byte
     
    For CompA = 2 To 12
        For CompB = 1 To 17
            Cells(CompA, CompB).Interior.ColorIndex = Cells(CompA - 1, CompB).Interior.ColorIndex
        Next CompB
    Next CompA
    Tu dis

    Bon courage
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Points : 24
    Points
    24
    Par défaut MERCI BEAUCOUP!!
    Merci Jean-Pierre,
    C'est exactement ce que je voulais faire.
    J'ai adapté la Macro mais ta base est super

    Merci Beaucoup

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Pour économiser une boucle, on peut travailler colonne par colonne (pour cette exemple le temps d’exécution n'est pas visible mais tant mieux, il faudrait avoir le reflexe d'optimiser les boucles)
    Une autre remarque, il faudrait aussi préfixer les Range et Cells par leur feuille mère (et aussi avec le classeur grand père au cas où on travaille avec plusieurs classeurs). Un adressage complet évite toujours de mauvaise surprises.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim i As Byte
     
    With Worksheets("Feuil1")
        For i = 1 To 17
            .Range(.Cells(2, i), .Cells(12, i)).Interior.Color = .Cells(1, i).Interior.Color
        Next i
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour mercatog

    Je suis d’accord sur tes remarques

    Mais j’ai une remarque sur le résultat de ton code

    Si une cellule sur la ligne 1 une cellule avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Interior.ColorIndex = xlNone
    Ton code lui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Interior.ColorIndex = 2
    Sur les lignes suivantes

    En tout cas chez moi
    Ce qui, je suis d’accord, est surprenant
    Nota : Je suis sur Excel 2003

    Cordialement

    Bonne journée
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour Jean Pierre.
    Mon intervention était pour arriver au résultat avec une seule boucle au lieu de 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim i As Byte
     
    With Worksheets("Feuil1")
        For i = 1 To 17
            .Range(.Cells(2, i), .Cells(12, i)).Interior.ColorIndex = .Cells(1, i).Interior.ColorIndex
        Next i
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2011, 11h38
  2. [QtGui] Couleur de fond des cellules d'une QTableView
    Par atalon1 dans le forum PyQt
    Réponses: 3
    Dernier message: 13/10/2010, 17h50
  3. Réponses: 1
    Dernier message: 13/06/2008, 11h21
  4. Réponses: 4
    Dernier message: 17/03/2008, 11h03
  5. Grouper selon couleur de fonds des cellules
    Par vinfranaur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/08/2006, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo