Identification d'une rubrique suivant la couleur d'une cellule

Gci

XLDnaute Nouveau
Bonjour à tous

J’ai un tableau avec des dates
Toutes les cellules contenant des dates sont en couleur (Il y a environ une trentaine de couleurs)
Ces couleurs sont affectées en fonction de leurs rubriques.

Certaines couleurs représentent des rubriques très utilisées, donc je n’ai aucun mal à m’en rappeler
D’autres sont moins utilisées et il arrive que je ne m’en rappelle plus et je ne suis pas le seul à utiliser ce tableau.

J’ai pensé avec l’aide d’une macro, si au survole de la cellule, un genre d’info-bulle pouvait en fonction de la couleur de la cellule m’indiquer cette rubrique.
L’indication de la rubrique au survol est sans doute le mieux, mais Si l’info-bulle n’est pas possible ou qu’il soit nécessaire de double-cliquer dessus cela peut très bien aller aussi.

Il faut que cela soit assez souple d’utilisation et pas gourmand en mémoire, car le tableau est très conséquent.

Pour matérialiser ce que je veux, j’ai imaginé un petit tableau sur le thème de l’informatique
Domaine que tout le monde connait ici.

Merci pour une aide invéntuelle
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    9.7 KB · Affichages: 29
  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    9.7 KB · Affichages: 34
  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    9.7 KB · Affichages: 39

Modeste

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonjour Gci,

Le survol d'une cellule n'est pas un événement qu'on peut "exploiter" en programmation. Une proposition basée sur le clic droit sur une cellule, faisant apparaître un MsgBox (pas certain que ce soit vraiment pratique, mais tu verras bien!)

En feuil2, un tableau nommé "Couleurs", reprenant les couleurs et noms des rubriques; en feuil1, au clic droit sur une cellule de la plage B1:F8, si la cellule est colorée, la couleur est recherchée dans le tableau "Couleurs". La rubrique correspondante s'affiche dans le MsgBox. Si la cellule n'est pas colorée, le menu contextuel habituel est accessible.
À ce stade, pas de prise en compte des erreurs (une couleur qui ne correspondrait à aucune rubrique, par exemple)

[Edit:] Salut job :)
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    18.5 KB · Affichages: 32
  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    18.5 KB · Affichages: 35
  • Identification d'une rubrique suivant la couleur d'une cellule.xlsm
    18.5 KB · Affichages: 30
Dernière édition:

job75

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonjour Gci,

Il suffit de construire un tableau de correspondance pour les couleurs.

Et de placer cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B:F]) Is Nothing Then Exit Sub
Dim r As Range, coul&
Cancel = True
Set r = [I2:I9] 'tableau à adapter
coul = Target.Interior.Color
For Each r In r
  If r.Interior.Color = coul Then MsgBox r(1, 2): Exit Sub
Next
MsgBox "Couleur non répertoriée"
End Sub
Elle se déclenche par double-clic dans la plage B:F.

Fichier joint.

Edit : salut cher Modeste, je ne t'avais pas vu :)

A+
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule(1).xls
    50.5 KB · Affichages: 26
Dernière édition:

Gci

XLDnaute Nouveau
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonjour Modeste, Bonjour Job75

Merci à tous les deux
Vous avez bien compris ce que je souhaitais, car cela correspond exactement à ce que j'espérais
Apparemment, vos solutions utilisent le même principes, mêmes si le code diffère ?

Juste une question à Job, a quoi sert le "&" al fin de
Code:
Dim r As Range, coul&

Une autre question à tous les deux, cela est très bien comme cela
Mais à tout hasard, est-il possible de faire en sorte que je MsgBox s'estompe de lui même au bout de 2 ou 3 secondes ?

A+
 

job75

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Re,

1) coul& c'est la même chose que coul As Long.

La propriété .Color renvoie en effet un nombre entier.

2) Pour fermer la boîte de dialogue le mieux est d'utilise un UseForm, voir fichier (2) avec cette macro :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B:F]) Is Nothing Then Exit Sub
Dim r As Range, coul&
Cancel = True
Set r = [I2:I9] 'tableau à adapter
coul = Target.Interior.Color
For Each r In r
  If r.Interior.Color = coul Then
    UserForm1.Label1 = r(1, 2)
    UserForm1.Show 0 'non modal
    Application.Wait Now + 3 / 86400 'délai 3 secondes
    Unload UserForm1
    Exit Sub
  End If
Next
MsgBox "Couleur non répertoriée"
End Sub
A+
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule(2).xls
    58 KB · Affichages: 25

Gci

XLDnaute Nouveau
Re : Identification d'une rubrique suivant la couleur d'une cellule

Re,

Merci pour l'explication
Donc si je comprends bien Dim Coul as Long peut sécrire Dim Coul&

Super !
Un délai d’affichage de 3 secondes, c'est amplement suffisant et très rapide d’exécution
Avec en plus la couleur :p

Pou un peu, on pourrait récupérer la couleur de la cellule en question dans l'UserForm ??

A+
 

Si...

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

salut

Toutes les cellules contenant des dates sont en couleur (Il y a environ une trentaine de couleurs)
Ces couleurs sont affectées en fonction de leurs rubriques.
donc indépendantes de la date, non ?

J’ai pensé avec l’aide d’une macro, si au survole de la cellule, un genre d’info-bulle pouvait en fonction de la couleur de la cellule m’indiquer cette rubrique.
cela ressemble à un commentaire, non ?
...

Je savais bien Modeste :D qu'on allait bientôt se croiser ;).
Hello Job :D

Voir Si... l'idée peut convenir.
 

Pièces jointes

  • Commentaire selon couleur (VBA).xls
    57.5 KB · Affichages: 30

job75

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Hello Si...

Oui c'est une solution.

Mais plein de commentaires qui apparaissent/disparaissent je trouve ça agaçant.

Et si l'on change la couleur il faut revalider la cellule.

A+
 

Gci

XLDnaute Nouveau
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonsoir Job75

On peut même récupérer l'âge du capitaine
L'âge du Capitaine, je le connais et j'ai pas besoin de Excel ;)

Chapeau pour la couleur :p
On allie la Précision à l'Information avec en plus la convivialité !!

Juste une chose, je sais paramétrer l'emplacement d'un UserForm, ce que l'on ne peut pas faire avec unMsgBox
Là il aurait intéressant que celui-ci se trouve à proximité de la cellule double-cliquée
Est-ce possible ???


Bonsoir Si et merci pour ta solution
Avant j'avais justement adopté un système de commentaires colorisés avec une MFC
C'était très intéressant, rapide, convivial, malheureusement
Je me suis aperçu que vu la taille de mon fichier et les déplacement des cellules que j’effectue dans mon tableau
que les commentaires et la MFC n'était pas du tout adaptée.

Mais je garde ta solution de côté et je te remercie d'avoir proposé cette solution.

A+
 

job75

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonjour Gci, le forum,

Juste une chose, je sais paramétrer l'emplacement d'un UserForm, ce que l'on ne peut pas faire avec unMsgBox
Là il aurait intéressant que celui-ci se trouve à proximité de la cellule double-cliquée
Est-ce possible ???

Ce n'est pas chose facile car la position de l'UserForm se mesure par rapport aux bords de l'écran alors que la position d'une cellule se mesure par rapport aux bords de la feuille de calcul.

Le plus simple est de procéder empiriquement en lançant cette macro (touches Ctrl+P) :

Code:
Sub PositionUSF()
'se lance par Ctrl+P
Dim t#
UserForm1.StartUpPosition = 0
UserForm1.Show 0 'non modal
MsgBox "Positionnez l'UserForm où vous voulez par rapport à la cellule A1." _
  & vbLf & vbLf & "Vous avez 15 secondes...", , "Positionnement"
t = Now + 15 / 86400 'délai 15 secondes
While Now < t: DoEvents: Wend
ThisWorkbook.Names.Add "X", UserForm1.Left
ThisWorkbook.Names.Add "Y", UserForm1.Top
Unload UserForm1
MsgBox "Maintenant double-cliquez sur une cellule colorée...", , "Positionnement"
End Sub
Fichier (4).

A+
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule(4).xls
    66 KB · Affichages: 20

Gci

XLDnaute Nouveau
Re : Identification d'une rubrique suivant la couleur d'une cellule

Bonjour Job75

Ce n'est pas chose facile car la position de l'UserForm se mesure par rapport aux bords de l'écran alors que la position d'une cellule se mesure par rapport aux bords de la feuille de calcul.
Effectivement je n'avais pas pensé à cela

Visiblement la Macro dédiée au positionnement "Ctrl P"
est là pour faire les réglages de base destinées ensuite pour la macro principale ?
Si c'est bien cela, je ne vois pas comment sont stockés ces réglages ? et où ?
Sur ton fichier, cela fonctionne bien
Sur mon fichier très volumineux, cela ne fonctionne pas
A force ce chercher, j'ai fini par me rendre compte, que cela fonctionne bien
Mais c'est l'UserForm que je ne vois pas !

Si je reste en haut de la feuille, c'est bon
Il n'y a que si je vais dans la colonne toute à droite de l'écran que l'on ne voit pas tout l'UserForm
Mais cela c'est logique, on retrouve le même phénomène avec les commentaires

Là où cela se gâte, c'est quand on descend vers les lignes suivantes
Plutôt que de décrire, je te renvoie ton fichier
Descend jusqu'à la ligne 39, puis sur la ligne 56
Tu comprendras plus facilement

A+



Je me demande comment tu fais pour enregis
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule(4) Essai.xls
    59.5 KB · Affichages: 16

job75

XLDnaute Barbatruc
Re : Identification d'une rubrique suivant la couleur d'une cellule

Re,

Bon, avant de partir j'ai juste retranché les coordonnées du VisibleRange :
Code:
.Left = Target.Left + IIf(IsError([X]), 0, [X]) - ActiveWindow.VisibleRange.Left
.Top = Target.Top + IIf(IsError([Y]), 0, [Y]) - ActiveWindow.VisibleRange.Top
Fichier (5).

Nota : les "réglages" sont bien sûr les noms définis X et Y créés par la macro PositionUSF :rolleyes:

A+
 

Pièces jointes

  • Identification d'une rubrique suivant la couleur d'une cellule(5).xls
    58.5 KB · Affichages: 48

Discussions similaires

Statistiques des forums

Discussions
312 193
Messages
2 086 062
Membres
103 110
dernier inscrit
Privé