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 :

.ColorIndex donne des résultats bizarres.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut .ColorIndex donne des résultats bizarres.
    Bonjour à tous,
    Ce matin, en voulant mettre en rouge une cellule, j'ai mis un classique .interior.colorindex = 3, et j'ai obtenu une cellule d'un beau..vert pâle!
    Un peu intrigué, j'ai écrit le petit programme suivant :
    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
     
    Sub couleur1()
    Dim sh As Worksheet
     
    Set sh = Application.Worksheets("Feuil1")
    k = 1
    For j = 2 To 7
        For i = 2 To 11
            With sh.Cells(i, j)
                .Interior.ColorIndex = k
                .Value = k
            End With
            k = k + 1
        Next
    Next
    End Sub
    Évidement, le code a planté arrivé à k=57, mais c'est hors sujet. Le résultat a dépassé mes attentes . le voilà :
    Nom : couleurs.jpg
Affichages : 219
Taille : 35,4 Ko

    Pas de blanc, pas de noir, et tout désorganisé...
    Où il y a un truc simple que je ne vois pas, ou je suis dans une faille spatio-temporelle...

    J'utilise Excel de Office 365. Peut-être font-ils des essais?
    Merci de vos idées (pas noires, svp!).
    Jacques

  2. #2
    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 114
    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 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La palette de couleur de ColorIndex est limitée à 56

    Pour mettre en couleur la police d'une cellule ou la cellule elle-même, utilisez la propriété Color au lieu de ColorIndex en passant comme valeur le code RGB

    Pour en savoir plus sur Les couleurs en VBA Excel: Les équivalences Hex-Long-RGB
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    Merci,Philippe, de cette réponse rapide.
    Bien sûr ColorIndex est limité à 56; c'est pourquoi j'ai signalé que la procédure plantait à k=57.
    La métgode Color en RGB doit marcher, bien entendu.
    Mais ColorIndex fonctionne aussi. Je l'utilise depuis des années. Le problème est que, depuis ce matin, elle produit des couleurs différentes de l'habitude... Y a quand même un truc; là, non?

  4. #4
    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 114
    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 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les palettes de couleurs peuvent varier non seulement en fonction de version mais également de PC, c'est la raison pour laquelle, j'ai abandonné cette propriété depuis plus de 20 ans car j'avais une couleur différentes sur deux PC différents en version Excel 2003
    La propriété Color utilisant le code RGB, c'est un standard
    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

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    ColorIndex définit l'index de la couleur de la palette de couleur active, qui potentiellement peut être différent d'un pc à l'autre et également en cas de changement de la palette de couleur activée (si j'ai bien compris, ce sont les couleurs du thème courant utilisé par office (onglet mise en page) ou dans le WorkBook.Colors https://learn.microsoft.com/fr-fr/of...orkbook.colors )

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Les palettes de couleurs peuvent varier non seulement en fonction de version mais également de PC, c'est la raison pour laquelle, j'ai abandonné cette propriété depuis plus de 20 ans car j'avais une couleur différentes sur deux PC différents en version Excel 2003
    La propriété Color utilisant le code RGB, c'est un standard
    Oui, Philippe, je sais tout ça! Effectivement les palettes varient légèrement suivant le PC, la version d'Excel, etc... Je ne suis pas bloqué dans ce que je fais puisque je peux utiliser Color. Je ne suis pas en train de demander comment je vais faire.
    Je suis simplement abasourdi par le changement dans les Colorindex qui est important et totalement inattendu. Je pense qu'il y a autre chose que la simple instabilité de la méthode. Pour que rouge devienne tout à coup vert, qu'il n'y ait plus ni blanc ni noir, quelque chose a du se passer. Quoi?

    umfred,
    Je n'avais pas lu votre réponse. Elle me donne une piste. mais je n'ai jamais utilisé volontairement de Workbook.Colors , et je n'en ai jamais créé. Tous les bouquins, les tutos, donnent la même palette de couleurs des ColorIndex (1 noir, 2 blanc, 3 rouge,4 vert,etc...). Qu'est-ce qui peut faire que, tout à coup, je change de Workbook.Colors de référence? Avez-vous une idée?
    Jacques

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    Je viens d’exécuter le même petit programme sur un autre de mes fichiers Excel, que j'ai ouvert sans fermer celui qui me cause cette surprise, et le résultat est conforme à ce qu'il a toujours été : 1 noir, 2 blanc, 3 rouge, etc. J'ai donc maintenant deux fichiers, ouverts en même temps qui ont deux palettes de couleurs totalement différentes!
    Je ne comprends rien. Help!

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    J'ai évoqué aussi les thèmes utilisés par Office (Mise en page > thèmes) qui doivent modifier la palette active.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    J'ai joué avec les thèmes : ils n'influent, semble-t-il, que sur les couleurs des objets (des "shapes") que l'on place dans les feuilles, peut-être sur d'autres éléments que je n'ai pas encore vus, mais pas sur la palette de couleurs qui reste la même si l'on change de thème...
    J'ai lu quelque part que cette palette est définie par un "Book1" que Excel ouvre systématiquement quand on ouvre un fichier... Une idée?

  10. #10
    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 114
    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 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sur les versions antérieures à 2007, l'utilisateur pouvait modifier manuellement sa palette de couleur. Cette possibilité a été retirée de l'interface utilisateur.
    Si vous travaillez toujours avec des fichiers qui ont été créés dans une version d'Excel antérieure à 2007, et que la palette de couleurs a été modifiée dans ces fichiers, alors cette palette personnalisée sera toujours utilisée lorsque vous ouvrez ces fichiers dans une version plus récente d'Excel.
    C'est pourquoi la couleur qui apparaît lorsque vous utilisez ColorIndex peut varier d'un ordinateur à un autre, en fonction de la palette de couleurs qui a été utilisée lors de la création du fichier.

    Je ne veux pas enfoncer le clou mais l'utilisation de Color avec le code RGB est LA SOLUTION et on passe de 56 à plus de 16 millions de couleurs possibles

    Si vraiment, vous voulez conserver l'usage de cette propriété, Il est toujours possible de modifier la palette de couleurs du classeur concerné à l'aide de VBA.
    Il suffirait créer un classeur avec une plage de 56 cellules avec le code RGB et de l'utiliser pour restituer les couleurs de la palette standard aux classeurs concernés

    Exemple pour lire le code RGB de CouleurIndex du classeur actif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
     Dim e As Byte
     For e = 1 To 56
      Range("A1").Offset(e).Value = ActiveWorkbook.Colors(e)
     Next
    End Sub
    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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    Merci, Philippe, pour cette réponse.
    Encore une fois, je ne m'adresse pas à la communauté parce que je suis bloqué dans mon travail. Bien sûr, je n'ai qu'à passer en RGB, et je fais ce que je veux.
    J'ai simplement été surpris de rencontrer, pour la première fois, une palette non conforme à celle qui traîne dans tous les tutos et manuels, et que j'utilise souvent par paresse (colorindex = 3, c'est plus rapide que color = RGB(0,0,255)...), et, du coup, je me suis demandé d'où était cette palette, comment la changer, etc., et je n'ai rien trouvé sur Internet.
    J'avais finalement à peu près compris à force d'essais ce que vous m'expliquez très bien ici.
    La seule interrogation qui me reste est que je pense que tous les fichiers Excel que je manipule ont été créé à la même époque. Pourquoi celui-là (pour lequel je n'avais encore jamais utilisé ColorIndex) a montré ce problème ? Mystère. Mais c'est mon mystère, pas celui de la communauté! Je considère la discussion close.
    Merci aussi à umfred...

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

Discussions similaires

  1. [PDO] tableau php données sql résultat bizarre
    Par boulamite dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/06/2008, 04h19
  2. requête avec jointure qui renvoie des résultats bizarres
    Par Canari74 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/05/2008, 02h13
  3. ClientRectangle me donne des valeurs bizarres
    Par orobin dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/01/2008, 21h34
  4. tester si une requete donne des résultats
    Par gui-llaume dans le forum IHM
    Réponses: 5
    Dernier message: 12/12/2007, 19h39
  5. 2 executions d'un programe C graphique avec SDL me donne des résultats différents
    Par Brin d'if dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 03/12/2007, 10h21

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