Clignotement, épaisseur du trait...

CISCO

XLDnaute Barbatruc
Bonsoir

Bonnes fêtes à tous.

En cherchant sur le forum et en utilisant une proposition de J. Boisgontier (fonction personnalisée coloreimage) (trouvée là : https://www.excel-downloads.com/thr...un-objet-selon-la-valeur-dune-cellule.213670/
), j'ai fait le petit fichier ci-joint. Si on change le pourcentage indiqué en colonne Taux, la couleur de l'objet indiqué à coté change. Je n'ai fait le travail que pour certains objets, ceux n'ayant pas #VALEUR dans la colonne jaune, donc ne soyez pas surpris si tout ne fonctionne pas...

Du point de vue didactique, cela serait mieux si je pouvais avoir les diverses possibilités suivantes :
* changement de la couleur du pourtour de la forme par survol du nom avec la souris
* trait plus épais, couleur et clignotement par clic sur le nom
* coloriage du fond de l'objet par double-clic sur le nom.

Pourriez-vous m'epliquer comment faire cela ? Je vais chercher sur le forum, sur le site de J. Boisgontier, mais vu mon niveau en VBA, je ne suis pas sorti de l'auberge...

@ plus
 

Pièces jointes

  • GLA suite2.xls
    140.5 KB · Affichages: 76
  • GLA suite2.xls
    140.5 KB · Affichages: 77
  • GLA suite2.xls
    140.5 KB · Affichages: 79

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Clignotement, épaisseur du trait...

Bonsoir,

change l'épaisseur sur double-clic

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Not Intersect([P3:P53], Target) Is Nothing Then
     On Error Resume Next
     nom = Replace(Target, " ", "_")
     If ActiveSheet.Shapes(nom).Line.Weight < 4 Then
       ActiveSheet.Shapes(nom).Line.Weight = 4
     Else
       ActiveSheet.Shapes(nom).Line.Weight = 2
     End If
   End If
   Cancel = True
End Sub

Clignotement sur clic

Code:
Dim Clignote
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([P3:P53], Target) Is Nothing And Not Clignote Then
    n = 0
    Clignote = True
    nom = Replace(Target, " ", "_")
    Do While n < 6
       On Error Resume Next
       ActiveSheet.Shapes(nom).Visible = False
       If Err > 0 Then Exit Sub
       fin = Timer + 0.4
       Do While Timer < fin
        DoEvents
       Loop
       ActiveSheet.Shapes(nom).Visible = True
       fin = Timer + 0.2
       Do While Timer < fin
        DoEvents
       Loop
       n = n + 1
    Loop
    Clignote = False
  End If
End Sub


JB
 

Pièces jointes

  • GLA suite2.xls
    145 KB · Affichages: 82
  • GLA suite2.xls
    145 KB · Affichages: 76
  • GLA suite2.xls
    145 KB · Affichages: 82
  • SurvolChamp6.xls
    78 KB · Affichages: 75
  • ClignotementShapes.xls
    62.5 KB · Affichages: 81
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Clignotement, épaisseur du trait...

Bonjour à tous

Les fichiers proposés en pièces jointes par J.B. m'aident bien, mais vu mon niveau en VBA, je n'arrive pas à faire exactement ce que je veux. Je cherche sur son site, dans la partie shape, mais bon, si vous pouviez m'aider...

Par exemple, le fichier SurvolChamp6 ci-dessus fonctionne bien, sauf que... si les lignes n'ont pas toutes la même hauteur, le nom sélectionné (la cellule en rouge) n'est pas en dessous du curseur. Idem si on adopte un affichage plein écran, sans la bande des menus ou si on se place plus bas sur la feuille, lorsque la liste des noms est trop grande pour apparaitre en entier à l'écran (une cinquantaine de noms sur mon fichier réel).
Cela vient entre autre de la partie suivante de la macro
d = 3
If X < d Or X > Label1.Width - d Or Y < d Or Y > Label1.Height - d Then
Range("champ").Interior.ColorIndex = xlNone
Else
Hcel = Range("champ").Cells(1, 1).Height
Lcel = Range("champ").Cells(1, 1).Width
Yc = Int(Y / Hcel)
Xc = Int(X / Lcel)
puisque dans celle-ci, ce sont la hauteur et la largeur de la 1ère cellule de la plage "Champ" qui sont prises comme référence. Si les autres lignes n'ont pas la même hauteur, cela ne convient pas et le nom sélectionné n'est pas celui en dessous du curseur. Il faudrait trouver une astuce pour obtenir un positionnement plus précis. J'ai bien essayé en mettant un coefficient au bout des lignes Hcel = et Lcel = , mais c'est du bricolage, et cela ne fonctionne pas bien dans tous les cas.

Je met en pièce jointe le fichier de J.B. modifié pour que vous compreniez mieux le problème. La correspondance curseur-nom sélectionné est bonne en haut de la liste, mais cela devient très chaotique vers le bas.

Merci pour vos propositions.

@ plus
 

Pièces jointes

  • GLA SurvolChamp6.xls
    113 KB · Affichages: 58
Dernière édition:

david84

XLDnaute Barbatruc
Re : Clignotement, épaisseur du trait...

Bonsoir Cisco,
la solution proposée par Jacques ne peut fonctionner qu'à partir du moment où l'ensemble des lignes de la plage a la même hauteur.
De plus cette approche a ses limites car elle n'est pas adaptée ni à la modification du zoom ni à la modification de la fenêtre active via l'ascenseur ou la molette car les paramètres X et Y te donnent la position du curseur par rapport à la fenêtre affichée à l'écran et non par rapport à la position de la cellule A1.

J'ai bien trouvé un semblant de solution pour ton histoire de ligne de différentes hauteur, peut-être est-il possible de prendre en compte l'histoire du zoom en appliquant un coefficient, par contre je ne vois pas comment régler le fait de prendre en compte le décalage de la fenêtre via la molette ou l'ascenseur.

Je poste malgré tout en espérant que cela inspirera quelqu'un pour te trouver une solution.
Je n'ai laissé que la macro utilisant l'événement MouseMove dans le fichier (je ne me suis pas occupé du reste).
Peut-être te faudrait-il passer par une autre solution que l'événement MouseMove...
A+
 

Pièces jointes

  • GLA SurvolChamp_Cisco.xls
    113 KB · Affichages: 66

CISCO

XLDnaute Barbatruc
Re : Clignotement, épaisseur du trait...

Bonjour à tous, bonjour David84.

Merci pour ta proposition. Bien d'accord avec ton explication (et en plus, c'est bien expliqué). Je n'avais pas pensé au problème lié au zoom, mais avais constaté ceux liés à la hauteur des lignes ou à l'utilisation de l'ascenceur.

Je regarde ta proposition. Encore merci.

@ plus
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 932
Membres
103 676
dernier inscrit
Haiti