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 :

Boucle sur nom long RGB


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2022
    Messages : 4
    Par défaut Boucle sur nom long RGB
    Bonjour à tous

    C'est mon 1er message donc j’espère tout faire comme il faut !

    Je cherche à afficher une couleur d’après son nom RGB
    Voici les essais que j'ai fait (voir code + image )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Coul() 
    For i = 2 To 143
        Range("D" & i).Interior.Color = rgbAliceBlue                'Ok
        Range("E" & i).Interior.Color = Val(Range("B" & i).Value)   'Ok
        Range("F" & i).Interior.Color = Range("B" & i).Value        'Ok
     
        Range("G" & i).Interior.Color = Val(Range("A" & i).Value)   'Non Ok
        Range("H" & i).Interior.Color = Val(Range("A" & i).Value2)  'Non Ok
        Range("I" & i).Interior.Color = Val(Range("A" & i).Text)    'Non Ok
    '    Range("J" & i).Interior.Color = Range("A" & i).Text         'Err 13 Incompatibilité de type
    '    Range("K" & i).Interior.Color = Range("A" & i).Value        'Err 13 Incompatibilité de type
    '    Range("L" & i).Interior.Color = Range("A" & i).Value2       'Err 13 Incompatibilité de type
    Next i
    End Sub
    Quand je mets directement le nom rgb exemple rgbAliceBlue ou le N° de la couleur c'est ok
    Mais quand je boucle sur une variable je n'arrive pas à coller la couleur correspondant au long nom (colonne A ) voir image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Val(Range("A" & i).Value)
    Me renvoie 0 donc la couleur noire !

    En clair je voudrais faire une boucle sur la colonne A et afficher la couleur correspondante dans une autre colonne.
    J’espère avoir été suffisamment clair.

    Merci d'avance pour vos réponses .
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Le problème vient du faite que tu mélanges les notions
    • de constante/Enumeration (rgbAliceBlue) qui est une sorte de variable non modifiable et valable uniquement dans un code VBA
    • de valeur textuel string, c'est le contenu de la cellule Ax. Quand tu demande à VBA d'aller chercher le contenu de la cellule, il lit "rgbAliceBlue", un string et pas une constante. C'est un peu comme si tu écrivais "If Value = true then" dans une cellule et qu'ensuite tu demandes à VBA de comprendre le contenu de la cellule comme étant une ligne de code.
    • de valeur numérique. Dans ta colonne B, il s'agit d'une valeur numérique, donc quand tu demandes à VBA d'aller chercher 16774488 dans le contenu d'une cellule, il lit bien une valeur numérique que tu peux utiliser tel quelle dans le code.


    Sur la notion de constante, quand tu inscris rgbAliceBlue, au niveau VBA il a une ligne quelque part qui dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const rgbAliceBlue as long = 17675408
    Mon comparaison est imagée, car il s'git en fait de l'énumération XlRgbColor

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2022
    Messages : 4
    Par défaut
    Merci de ta réponse

    C'est sur le lien que tu as mis que j'ai été cherché les différentes noms RGB

    Est il possible alors de déclarer toute la liste RGB long (la colonne A) en constante et ensuite de faire une boucle dessus ou alors il faut que j'abandonne cette idée et partir sur son N° (colonne B)
    Ou une autre méthode pour me servir de la colonne A ?

    A+

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    A ma connaissance (du moins à ce qui me viens en tête), je ne vois pas de solution. Si solution il y a, de toute façon, ça va faire un code alambiqué, il y a d'autres sujets qui seraient à mon sens plus intéressants à aborder pour débuter

    Donc oui, le mieux est d'utiliser la colonne B

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par Fantaisie Voir le message
    Est il possible alors de déclarer toute la liste RGB long (la colonne A) en constante et ensuite de faire une boucle dessus ou alors il faut que j'abandonne cette idée et partir sur son N° (colonne B)
    Ou une autre méthode pour me servir de la colonne A ?
    Refaire cette liste reviendrait à récrire dans du code VBA ce qui y existe déjà et qui est traduit dans la feuille VBA en version textuel.
    J'avoue ne pas trop voir l'intérêt.

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2022
    Messages : 4
    Par défaut
    Ok

    Merci bien

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    En faisant une recherche pour autre chose, je suis tombé sur une ancienne conversation, elle pourrait peut-être t'aider à faire ce que tu souhaites.
    https://www.developpez.net/forums/d1...d-enumeration/

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2022
    Messages : 4
    Par défaut
    Bonjour

    Merci pour l'info je suis aller voir et je vais essayer de comprendre un petit peu ... mais c'est pas gagner.
    Vu la réponse que tu m'avais donné précédemment j'ai contourné le problème en allant récupérer les valeurs de la colonne B certes nettement moins parlant que le nom long RGB que je voulais employé.

    Merci bien pour tout
    Bonne journée

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il me semble qu'il y a plus simple.
    Vous créez une table de correspondance (tableau structuré) nommée pour l'exemple t_Color contenant deux colonnes (trois si l'on veut ajouter les commentaires) avec la première contenant une référence unique, la deuxième la couleur souhaitée (pas besoin ainsi de se casser la tête à chercher le code couleur (voir illustration)

    On crée une fonction générique avec deux arguments. Le code unique et la table de correspondance qui renvoie le code RGB de la couleur contenue dans la deuxième colonne

    Code de la procédure générique nommée GetRGB_Code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function GetRGB_Code(ColorName As String, ColorTable As Range) As Long
      ' Renvoie le code couleur de la cellule de la deuxième colonne de la table
      Dim fx As WorksheetFunction
      Dim rng As Range
      Dim r As Long
      Set fx = Application.WorksheetFunction
      Set rng = ColorTable.ListObject.ListColumns(1).DataBodyRange
      r = fx.Match(ColorName, rng, 0)
      GetRGB_Code = ColorTable.Cells(r, 2).Interior.Color
      '
      Set fx = Nothing: Set rng = Nothing
    End Function
    Exemple d'une procédure qui l'invoque en mettant l'intérieur de la cellule A3 de la feuille nommée "Rapport Mensuel" avec la couleur du code ColorRed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub t()
      With Worksheets("Rapport Mensuel")
      .Range("A3").Interior.Color = GetRGB_Code("ColorRed", Range("t_Color"))
      End With
    End Sub
    On pourrait évidemment mettre le code unique et la couleur dans la même colonne.

    Nom : 220508 dvp ColorMaping.png
Affichages : 209
Taille : 6,1 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Merci Philippe d'avoir remis de la raison dans cette discussion... J'étais parti dans un délire je crois

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour Quaz,
    J'étais parti dans un délire je crois
    Cela m'est déjà arrivé aussi .
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [OL-2013] Enregistrement email sous .msg - Boucle sur nom de dossier
    Par don_pets dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 13/09/2016, 09h44
  2. Boucle sur nom de variable
    Par mehdouch dans le forum jQuery
    Réponses: 3
    Dernier message: 05/01/2011, 18h08
  3. boucle sur Nom
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/09/2006, 13h27
  4. realiser une boucle sur un nom de champs dans un Etat
    Par stephanfromtoulouse dans le forum IHM
    Réponses: 2
    Dernier message: 09/09/2006, 00h09
  5. [FLASH MX 2004] Boucle sur nom
    Par mohican13 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 21/04/2006, 13h45

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