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 :

Couleurs selon plage dans le code [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Couleurs selon plage dans le code
    Bonjour
    Cette macro de jfontaine est superbe quand elle est finalisée sur un classeur.
    Mais en l'utilisant sur d'autres classeurs, je suis toujours obligé de mettre en colonne Z les numéros de couleurs que la macro fait référence pour fonctionner.
    Comment mettre directement dans le code cette plage de nombre et ainsi je n'aurais plus à alimenter cette colonne Z de la feuille active.

    Merci

    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
    40
    Sub Module15Couleurs()
     
    Dim i As Long
    Dim nb As Integer
    Dim j As Integer
    Dim intCouleur As Integer
     
    Dim rg As Range
     
    intCouleur = 1
    i = 1
     '!!mettre en col Z couleurs recherchées:6,8,10,12,14,16,18,20,22,24,26,28,30,34,35,36,37,38,39,40,42,43,44,45,46,50
    Do While Range("G" & i).Value <> ""
     
        nb = Application.WorksheetFunction.CountIf(Range("G" & i & ":G64000"), Range("G" & i).Value)
     
        If nb > 1 And Range("H" & i).Interior.ColorIndex = xlNone Then
     
            Range("A" & i & ":H" & i).Interior.ColorIndex = Range("Z" & intCouleur).Value
     
            For j = 1 To nb - 1
                If j = 1 Then
                    Set rg = Range("G:G").Find(Range("G" & i).Value, Range("G" & i), , , , xlNext)
                Else
                    Set rg = Range("G:G").FindNext(rg)
                End If
     
                Range("A" & rg.Row & ":H" & rg.Row).Interior.ColorIndex = Range("Z" & intCouleur).Value
     
            Next j
     
            intCouleur = intCouleur + 1
     
        End If
     
     
        i = i + 1
    Loop
     
    End Sub

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    peut-être en créant une table code_couleur que tu initialiseras exactement comme ta colonne Z et que tu utiliseras en lieu et place, du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i & ":H" & i).Interior.ColorIndex = code_couleur(intCouleur)
    Je n'ai pas testé.

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    tu peux aussi creer une variable tableau et mettre tes codes couleurs

    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
    40
    41
    42
    43
    44
    45
     
    Dim i As Long
    Dim nb As Integer
    Dim j As Integer
    Dim intCouleur As Integer
     
    Dim rg As Range
     
    intCouleur = 0
     
    Dim str(30) As String
     
    For i = 0 To 30
        str(i) = i * 2
    Next i
     
     
    i = 1
     
    Do While Range("E" & i).Value <> ""
     
        nb = Application.WorksheetFunction.CountIf(Range("E" & i & ":E64000"), Range("E" & i).Value)
     
        If nb > 1 And Range("D" & i).Interior.ColorIndex = xlNone Then
     
            Range("A" & i & ":D" & i).Interior.ColorIndex = str(intCouleur)
     
            For j = 1 To nb - 1
                If j = 1 Then
                    Set rg = Range("E:E").Find(Range("E" & i).Value, Range("E" & i + 1))
                Else
                    Set rg = Range("E:E").FindNext(rg)
                End If
     
                Range("A" & rg.Row & ":D" & rg.Row).Interior.ColorIndex = str(intCouleur)
     
            Next j
     
            intCouleur = intCouleur + 1
     
        End If
     
     
        i = i + 1
    Loop

  4. #4
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    jfontaine Bonjour

    Merci pour ce code qui est aussi super avec la variable.
    Je ne veux pas abuser de ta gentillesse, mais certaines couleurs sont trop foncées avec cette variable et rendent peu lisibles après impression les caractères à l'intérieur des cellules alors qu'avec ton premier code je pouvais déterminer les couleurs clairs ce qui était la cerise sur le gâteau, mais qui m'oblige à seconder ton code par un copier coller des nombres mis sur autre sheet puis de les coller en colonne Z puis de masquer cette colonne pour que l'utilisateur n'ait pas à imprimer jusqu'à la plage de la colonne Z, je pourrais aussi au lieu de masquer la colonne l'effacer après les couleurs, c'est possible, mais c'est dans l'utilisation de ton code sur un autre classeur, il me faut toujours faire cette manip d'avoir cette sheet avec les nombre couleurs.

    Si tu peux faire quelque chose, sinon je me contente très très bien de tes 2 codes.

    Merci

    Bonjour Godzestla

    Je viens de voir ton post, mais je ne vois pas comment l'intégrer dans la code.

    créer une table code_couleur que tu initialiseras exactement comme ta colonne Z

    C'est justement ma demande, mais comment créer cette table code couleur dans la macro.

    Merci

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Jérome l'a déjà fait pour toi.
    Prend le temps de relire ses réponses.

    Jfontaine, chouette ton code.

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Utiliser la colonne Z de la meme feuille n'est bien sur qu'un exemple.

    Le mieux serait de créer une feuille "parametres" avec une colonne dédiée aux codes couleurs a utiliser puis d'utiliser cette colonne (qui pourrait tres bien être nommée) dans le VBA

  7. #7
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    jfontaine,
    J'avais déjà nommée une sheet 'Couleurs' dans mon fichier macro dont je me servais pour mon copier coller dans la feuille active, et avec tes recommandations j'ai compris dans le code comment faire les modifications, ça marche, c'est super.
    De plus je finalise ma macro par Edition copier une feuille qui se termine dans un autre fichier tout en fermant mon fichier macro sans l'enregistrer automatiquement.

    Ouf.. je n'osais plus répondre car Godzestla disait que je devais pouvoir le faire et que tout était déjà écrit, j'ai cherché tout l'après-midi à mettre mes nombres dans le code en vain, je n'avais pas le moral.
    Tu vois un petit démarrage de ta part m'a permis de finaliser... je souris de nouveau.
    Un grand merci à toi
    Bien cordialement

    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
    40
    Sub Module15Couleurs()
     
    Dim i As Long
    Dim nb As Integer
    Dim j As Integer
    Dim intCouleur As Integer
     
    Dim rg As Range
     
    intCouleur = 1
    i = 1
     
     Do While Range("G" & i).Value <> ""
     
        nb = Application.WorksheetFunction.CountIf(Range("G" & i & ":G64000"), Range("G" & i).Value)
     
        If nb > 1 And Range("H" & i).Interior.ColorIndex = xlNone Then
     
            Range("A" & i & ":H" & i).Interior.ColorIndex = Sheets(3).Range("A1:A32" & intCouleur).Value
                                                            'Sheet 3 = Couleurs
            For j = 1 To nb - 1
                If j = 1 Then
                    Set rg = Range("G:G").Find(Range("G" & i).Value, Range("G" & i), , , , xlNext)
                Else
                    Set rg = Range("G:G").FindNext(rg)
                End If
     
                Range("A" & rg.Row & ":H" & rg.Row).Interior.ColorIndex = Sheets(3).Range("A1:A32" & intCouleur).Value
                                                                          'Sheets 3 = Couleurs
            Next j
     
            intCouleur = intCouleur + 1
     
        End If
     
     
        i = i + 1
    Loop
     
    End Sub

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

Discussions similaires

  1. Ajouter des couleurs dans le code visual studio ?
    Par barbuslex dans le forum Visual Studio
    Réponses: 2
    Dernier message: 31/10/2009, 14h24
  2. Réponses: 1
    Dernier message: 21/06/2009, 17h47
  3. Ajuster saturation des couleurs dans le code
    Par deejay2221 dans le forum Flash
    Réponses: 2
    Dernier message: 07/05/2008, 17h48
  4. Couleur selon une valeur dans un <td> en javascript/html
    Par twingo321 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/11/2007, 09h27
  5. Finalisation de couleur dans un code JavaScript
    Par Gunner4902 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/11/2007, 18h02

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