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 les propriétés d'une case dans une autre [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut Copier les propriétés d'une case dans une autre
    Bonjour à tous,

    j'ai crée en VBA une mise en forme conditionnelle avec 5 conditions que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Workbook_Open()
     
        Range("e9:e200").Select
        Range("e9").Activate
        Dim lacellule As Range
        For Each lacellule In Selection
        couleurderemplissage = lacellule
        Next lacellule
        Range("e9:e9").Select
        Range("e9").Activate
     
    End Sub
     
            Property Let couleurderemplissage(lacellule As Range)
            Dim indexcouleur As Integer
                Select Case lacellule.Value
     
                    Case "1"
                    indexcouleur = 3
                    Case "2"
                    indexcouleur = 8
                    Case "3"
                    indexcouleur = 6
                    Case "4"
                    indexcouleur = 7
                    Case "5"
                    indexcouleur = 4
                    Case Else
                    indexcouleur = xlColorIndexNone
     
                End Select
            lacellule.Interior.ColorIndex = indexcouleur
            End Property
    Cela se fait sur la colonne "E".
    J'aimerais simplement que ma macro copie la couleur de fond de la case E(x) dans la case D(x) quand une des 5 conditions est remplie pour cette case ...

    Est-ce possible ?

    Merci d'avance à quiconque prendra le temps de me lire.

    @+ Vapo

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Une solution simple consisterait à appliquer la même MFC sur D que sur E, en s'appuyant sur les valeurs de E...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Oui c'est ce que je voudrais mais je ne sais pas comment faire...
    je suis assez débutant en VBA, j'ai juste adapté un code trouvé sur internet.

    Il faut qua ça ressemble à ça ??? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Workbook_Open()
     
        Range("d9:e200").Select
        Range("e9").Activate
        Dim lacellule As Range
        For Each lacellule In Selection
        couleurderemplissage = lacellule
        Next lacellule
        Range("e9:e9").Select
        Range("e9").Activate
     
    End Sub
     
            Property Let couleurderemplissage(lacellule As Range)
            Dim indexcouleur As Integer
                Select Case lacellule.Value
     
                    Case "1"
                    indexcouleur = 3
                    Case "2"
                    indexcouleur = 8
                    Case "3"
                    indexcouleur = 6
                    Case "4"
                    indexcouleur = 7
                    Case "5"
                    indexcouleur = 4
                    Case Else
                    indexcouleur = xlColorIndexNone
     
                End Select
            lacellule.Interior.ColorIndex = indexcouleur
            End Property
    [EDIT] : non j'ai testé ce n'est pas ça car là ce n'est pas basé sur la valeur de E.

    Pour simplifier, n'existe-t-il pas un moyen du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("e9:e200").Interior.ColorIndex = ("d9:d200).Interior.ColorIndex
    ???

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Bon alors j'ai trouvé une solution que j'arrive à appliquer sur une case en particulier, j'ajoute ceci à mon code (pour la case E9 dans ce cas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Range("E9").Interior.ColorIndex = "3" Then Range("D9").Interior.ColorIndex = "3"
        If Range("E9").Interior.ColorIndex = "8" Then Range("D9").Interior.ColorIndex = "8"
        If Range("E9").Interior.ColorIndex = "6" Then Range("D9").Interior.ColorIndex = "6"
        If Range("E9").Interior.ColorIndex = "7" Then Range("D9").Interior.ColorIndex = "7"
        If Range("E9").Interior.ColorIndex = "4" Then Range("D9").Interior.ColorIndex = "4"
    Mais ça ne fonctionne pas quand j'essaie de le faire sur une plage de case :
    une erreur dans mon code ??? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Range("E9:E167").Interior.ColorIndex = "3" Then Range("D9:D167").Interior.ColorIndex = "3"
        If Range("E9:E167").Interior.ColorIndex = "8" Then Range("D9:D167").Interior.ColorIndex = "8"
        If Range("E9:E167").Interior.ColorIndex = "6" Then Range("D9:D167").Interior.ColorIndex = "6"
        If Range("E9:E167").Interior.ColorIndex = "7" Then Range("D9:D167").Interior.ColorIndex = "7"
        If Range("E9:E167").Interior.ColorIndex = "4" Then Range("D9:D167").Interior.ColorIndex = "4"

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut
    Sans le code complet, on ne peut pas t'aider...


  6. #6
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Alors le voici ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        Range("e9:e200").Select
        Range("e9").Activate
        Dim lacellule As Range
        For Each lacellule In Selection
        couleurderemplissage = lacellule
        Next lacellule
        Range("e9:e9").Select
        Range("e9").Activate
        
        If Range("E9:E167").Interior.ColorIndex = "3" Then Range("D9:D167").Interior.ColorIndex = "3"
        If Range("E9:E167").Interior.ColorIndex = "8" Then Range("D9:D167").Interior.ColorIndex = "8"
        If Range("E9:E167").Interior.ColorIndex = "6" Then Range("D9:D167").Interior.ColorIndex = "6"
        If Range("E9:E167").Interior.ColorIndex = "7" Then Range("D9:D167").Interior.ColorIndex = "7"
        If Range("E9:E167").Interior.ColorIndex = "4" Then Range("D9:D167").Interior.ColorIndex = "4"
    
    End Sub
    
            Property Let couleurderemplissage(lacellule As Range)
            Dim indexcouleur As Integer
                Select Case lacellule.Value
    
                    Case "1"
                    indexcouleur = 3
                    Case "2"
                    indexcouleur = 8
                    Case "3"
                    indexcouleur = 6
                    Case "4"
                    indexcouleur = 7
                    Case "5"
                    indexcouleur = 4
                    Case Else
                    indexcouleur = xlColorIndexNone
    
                End Select
            lacellule.Interior.ColorIndex = indexcouleur
            End Property
    Les parties en rouge sont pour moi l'endroit d'où vient le problème...
    J'ai l'impression qu'il n'associe pas E(x) à D(x) ou alors qu'il faut que toute ma plage des E soit sur fond rouge pour faire passer ma plage des D sur fond rouge (ce qui n'est pas ce que je veux...).
    Je veux que si E(135) à un fond rouge, D(135) passe sur fond rouge.

    N'hésitez pas à me poser des questions si je n'ai pas été clair

    [EDIT] : hé DVANO tu habites à vienne, moi je suis de chonas l'amballan juste à côté...^^

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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