Macro pour coloriser des cellules en fonction d'un index de rubriques

Gci

XLDnaute Nouveau
Bonjour le Forum

Dans un tableau j’utilise la couleur des cellules en fonction de rubrique
(Chaque rubrique à sa couleur et une couleur ne correspond qu’à une seule rubrique).

Comme j’utilise ce tableau à longueur de journée, je connais de tête la plus grande majorité des couleurs
Quand j’ai un trou de mémoire, grâce au Forum, je dispose maintenant d’une macro pour me permettre d’identifier une couleur.

Quand je créée une nouvelle cellule, je recopie manuellement une cellule existante avec sa couleur affectée
Mais il arrive qu’une rubrique ne soit pas présente dans la feuille !

J’ai bien réalisé des macros pour coloriser ces cellules en fonction de ces rubriques
Ex macro Sub Rubrique_Guide() ou Sub Rubrique_Cartouche()
Mais cela m’oblige à faire une macro pour chaque rubrique, ce n’est donc pas très pratique !
Je suppose qu’il doit y avoir un moyen plus simple d’affecter ces couleurs directement à partir de la feuille d’index ?
Merci si quelqu’un à une idée ?
A+
 

Pièces jointes

  • Macro pour coloriser des cellules en fonction d'un index de rubrique.xlsm
    28.3 KB · Affichages: 71

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonsoir Gci,

Un essai dans le fichier joint. Cliquer_droit sur une cellule de la feuille Feuil1 fait apparaître un menu contextuel. En cliquant sur une rubrique de ce menu, on applique à la cellule le format correspondant issu de la feuille Index.

Cet essai est basé sur un article de Ce lien n'existe plus issu de l'excellent site www.excelabo.net.
 

Pièces jointes

  • Gci-Macro pour coloriser des cellules en fonction d'un index de rubrique v1.xlsm
    28.2 KB · Affichages: 59

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonjour Gci, mapomme.


Un autre essai en pièce jointe.​


Bonne journée.


ℝOGER2327
#7430


Mercredi 4 Gidouille 141 (Sainte Tripe, républicaine - fête Suprême Quarte)
30 Prairial An CCXXII, 0,5614h - chariot
2014-W25-3T01:20:51Z
 

Pièces jointes

  • Aide au coloriage-3.xlsm
    44.3 KB · Affichages: 64

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonjour Gci, ROGER2327,

Une version légèrement modifiée inspirée de la proposition de ROGER2327 (sélection multiple et adaptation auto au nombre de rubrique).
  • On peut colorier simultanément plusieurs cellules en les sélectionnant avant de cliquer-droit.
  • Le code de création du menu s'adapte automatiquement au nombre de rubriques présentes dans la colonne A de la feuille Index.
 

Pièces jointes

  • Gci-Macro pour coloriser des cellules en fonction d'un index de rubrique v2.xlsm
    29.7 KB · Affichages: 64
Dernière édition:

Gci

XLDnaute Nouveau
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonjour Mapomme, Bonjour Roger2327.

Merci beaucoup à tous les deux pour vos solutions

Je réponds en 1er à la 1ère solution de Mapomme avant de poursuivre avec les autres.
Le temps de bien tester...

Je ne m’attendais vraiment pas à cette technique, car je ne pensais pas que l’on pouvait programmer le menu contextuel d’Excel :p
En tout cas c’est très satisfaisant.

Même si le menu contextuel reste toujours accessible, ce qui très appréciable !
J’ai rajouté une ligne de code pour que le clic droit n’intervienne que dans les colonnes désirées.

J’ai 23 rubriques pour l’instant
Je viens de faire l’essai, cela reste très confortable d’utilisation.
Au-dessus de 30 cela risque d’être beaucoup moins pratique, mais ce n’est pas prévu pour l’instant.

Le seul petit problème, c’est au niveau des « .Controls »
Je m’aperçois en 1er qu’ils doivent obligatoirement être classés chronologiquement
On ne peut faire non plus la passe sur un nombre (Exemple passé de 23 à 25, sans le 24).
Ils ne peuvent non plus être alphanumériques (Rajouter par exemple "23a" après le "23")
Donc cela oblige, lorsque l’on a besoin d’intégrer une nouvelle rubrique
Soit de ne pas respecter l’ordre alphanumérique des rubriques en plaçant cette nouvelle rubrique en queue de liste
Soit de modifier tout les « .Controls » un par un.
Mais peut-être y a-t-il une autre solution ???

A+
 

Gci

XLDnaute Nouveau
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Re,

Reger, cette solution est très intéressante.

Grace aux couleurs, elle est très conviviale, mais aussi elle permet de beaucoup mieux sélectionner la bonne rubrique.

En revanche, il y a un gros problème, c’est que l’on a plus accès au lien contextuel
Hors j’ai besoin de déplacer souvent des cellules.
Mais peut-être serait-il possible de sélectionner la cellule avant l’action de la macro ??
Et que le simple fait de cliquer sur le bouton coloriserait alors la ou les cellules actives et sortirait par la même occasion automatiquement de l’UserForm

Un autre problème, c’est que la couleur reste mémorisée après l’utilisation de la macro
Donc si on clique par mégarde sur une cellule, on l’a colorise sans le vouloir.

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Suite...


Le cahier des charges se précise. Dommage qu'on n'y ait pas droit dès le début !
Voyez si le classeur joint est plus convenable.​


ℝOGER2327
#7431


Mercredi 4 Gidouille 141 (Sainte Tripe, républicaine - fête Suprême Quarte)
30 Prairial An CCXXII, 5,9029h - chariot
2014-W25-3T14:10:01Z
 

Pièces jointes

  • Aide au coloriage-4.xlsm
    52.6 KB · Affichages: 56
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonsoir Gci,

[...] Le seul petit problème, c’est au niveau des « .Controls »
Je m’aperçois en 1er qu’ils doivent obligatoirement être classés chronologiquement
On ne peut faire non plus la passe sur un nombre (Exemple passé de 23 à 25, sans le 24).
Ils ne peuvent non plus être alphanumériques (Rajouter par exemple "23a" après le "23")
Donc cela oblige, lorsque l’on a besoin d’intégrer une nouvelle rubrique
Soit de ne pas respecter l’ordre alphanumérique des rubriques en plaçant cette nouvelle rubrique en queue de liste
Soit de modifier tout les « .Controls » un par un.
[...]

Je ne comprend pas la difficulté. La version v2 s'adapte automatiquement au nombre de rubriques de la colonne A de la feuille index.


  • Pour retirer une rubrique, il suffit de supprimer la rubrique.
  • Pour ajouter une rubrique, il suffit de la rajouter en fin de liste et de la formater (format nombre= date, couleur fond et couleur police)
  • ensuite dans le premier cas comme dans le second, faire un tri de la colonne A
 

Gci

XLDnaute Nouveau
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonsoir Roger, Mapomme, Le Forum

Merci Roger pour cette nouvelle solution
Je retrouve mon lien contextuel
et il y a assez de TextBox toutes prêtes pour toutes mes rubriques

Mais dans le mesure ou je vais appeler la macro que pour une seule cellule,
quelques fois pour 4 ou 5 cellules contiguës et jamais pour différentes rubriques à la fois
comme je disais dans mon précédent post, si cela est possible ??
Je préférerais pouvoir sélectionner la cellule ou les cellules contigües avant l’action de la macro
Et que le simple fait de cliquer sur le bouton coloriserait alors la ou les cellules actives et sortirait par la même occasion automatiquement de l’UserForm.


Merci Mapomme pour cette autre solution.
Le paramétrage qui me semblait compliqué dans ta première solution est là inexistant !
et on peut trier l'index par ordre alphabétique sans devoir reparamétrer quoi que se soit.
Cette solution est donc totalement dynamique !
Il y a pas la couleur, mais la rapidité d’exécution de la procédure ne peut pas être plus rapide.

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Suite...


Est-ce mieux ainsi ?​



ℝOGER2327
#7434


Jeudi 5 Gidouille 141 (Saint Ugolin, mansuet - fête Suprême Quarte)
1[SUP]er[/SUP] Messidor An CCXXII, 0,7275h - seigle
2014-W25-4T01:44:46Z
 

Pièces jointes

  • Aide au coloriage-5.xlsm
    52.4 KB · Affichages: 57

Gci

XLDnaute Nouveau
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonsoir Roger, Mapomme, Le Forum

Merci Roger

Oui c'est nettement mieux, juste un petit couilla
Si dès que je clique sur le bouton de la rubrique choisie, je sort de l'UserForm
Cela sera parfait (Si c'est réalisable bien sûr)

Je vais de ce pas faire l'essai dans mon tableau en attendant ....

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonjour à tous.


(...)
Oui c'est nettement mieux, juste un petit couilla
Si dès que je clique sur le bouton de la rubrique choisie, je sort de l'UserForm
Cela sera parfait (Si c'est réalisable bien sûr)
(...)
C'est faisable : j'ai juste oublié une petite ligne :
VB:
AppActivate "Microsoft Excel"

Oubli corrigé dans le classeur joint. J'en ai profité pour refaire un classeur propre en virant tout ce qui ne sert plus à rien et en simplifiant le formulaire. (C'est 25 Ko de gagné.)

Voyez si c'est enfin correct...​


Bonne journée.


ℝOGER2327
#7435


Vendredi 6 Gidouille 141 (Saint Dieu, retraité - fête Suprême Quarte)
2 Messidor An CCXXII, 0,6586h - avoine
2014-W25-5T01:34:51Z
 

Pièces jointes

  • Aide au coloriage-5ter.xlsm
    28.5 KB · Affichages: 48

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Suite...


Une version avec un formulaire légèrement modifié et un code plus court...​


ℝOGER2327
#7437


Samedi 7 Gidouille 141 (Saint Bébé Toutout, évangéliste - fête Suprême Quarte)
3 Messidor An CCXXII, 0,8390h - oignon
2014-W25-6T02:00:49Z
 

Pièces jointes

  • Aide au coloriage-5quinquies.xlsm
    27.1 KB · Affichages: 45

Gci

XLDnaute Nouveau
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Bonjour Roger

Me voici de retour
Je viens d'essayer tes 2 dernières versions
Je vois que la dernière est effectivement beaucoup plus concentrée
Mais je vois aussi que tu changé complétement de technique
Ce ne sont plus des TextBox mais des Images

Ces 2 dernières versions me semblent parfaites pour mon utilisation
J'ai donc essayé d'implanter la dernière dans mon tableau.
Mais je rencontre un problème et je n'arrive pas à trouver la provenance ???

J'ai le message d'erreur :
Erreur d'exécution 1004
La méthode Range de l'objet Woksheet à échoué

J'ai fait de nombreux essais
Même en recopiant directement la feuille d'index de ton fichier
Je ne peux pas ouvrir l'userform

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour coloriser des cellules en fonction d'un index de rubriques

Re...


(...)
Mais je rencontre un problème et je n'arrive pas à trouver la provenance ???

J'ai le message d'erreur :
Erreur d'exécution 1004
La méthode Range de l'objet Woksheet à échoué

J'ai fait de nombreux essais
Même en recopiant directement la feuille d'index de ton fichier
Je ne peux pas ouvrir l'userform
(...)
Peut-être ce commentaire vous a-t-il échappé ?
'Pour utiliser ce formulaire, il faut qu'il existe un tableau semblable au
'au tableau Palette1 de la feuille Index1 (onglet Index) de ce classeur.
'Si on veut s'en passer, il faut réécrire autrement la procédure DéfCouleurs
'pour définir les propriétés Value, BackColor et ForeColor des contrôles 0
'à 31.

Voici quelques précisions :


  1. Créer ou ouvrir le classeur où l'on veut installer le formulaire.

  2. Vérifier l'existence d'une plage uni-colonne destinée à alimenter le formulaire.
    (Dans le classeur de démonstration, cette plage est la plage Palette du tableau Palette1 de la feuille Index1 (ou onglet "Index")).

  3. Installer le formulaire Gaston2 et le module PaletteROGER2327 dans le classeur.

    Deux méthodes possibles :

    • Ouvrir le classeur Aide au coloriage-5quinquies.xlsm.
      Ouvrir l'éditeur VisualBasic et glisser-déposer le formulaire et le module de Aide au coloriage-5quinquies.xlsm vers le classeur de destination.

    • Ouvrir le classeur Aide au coloriage-5quinquies.xlsm.
      Ouvrir l'éditeur VisualBasic et exporter les fichiers Gaston2 et PaletteROGER2327.
      (On peut alors fermer la classeur Aide au coloriage-5quinquies.xlsm.)
      Importer les fichiers Gaston2 et PaletteROGER2327 dans le classeur à importer.

  4. Si le tableau destiné à alimenter le formulaire n'est pas nommé "Palette1[Palette]" ou si ce tableau n'est pas dans la feuille Index1 (ou onglet "Index"), il faut modifier le code du formulaire :
    Dans la procédure DéfCouleurs la ligne
    VB:
    Set Palette = Index1.Range("Palette1[Palette]")
    doit être adaptée en remplaçant Index1 par le nom de la feuille contenant le tableau, et en remplaçant "Palette1[Palette]" par une référence à la plage de données.

    Exemple : la plage d'alimentation du formulaire est la plage nommée MesCouleurs dans le tableau nommé Arc_en_ciel installé dans la feuille Feuil28 (onglet "Données").

    On écrira
    VB:
    Set Palette = Feuil28.Range("Arc_en_ciel[MesCouleurs]")
    ou
    VB:
    Set Palette = Worksheets("Données").Range("Arc_en_ciel[MesCouleurs]")

C'est l'unique modification à effectuer dans le code. À partir de là, le formulaire doit être opérationnel.

Il ne reste plus, si on le souhaite, qu'à affecter un raccourci-clavier à la procédure Memo (du module PaletteROGER2327).
(Dans le classeur de démonstration, j'ai utilisé le raccourci Ctrl m.)​


Remarque : la procédure d'installation s'applique également au classeur Aide au coloriage-5ter.xlsm


Bon courage.


ℝOGER2327
#7438


Samedi 7 Gidouille 141 (Saint Bébé Toutout, évangéliste - fête Suprême Quarte)
3 Messidor An CCXXII, 4,4847h - oignon
2014-W25-6T10:45:48Z
 

Discussions similaires

Réponses
26
Affichages
378

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren