XL 2019 Problème avec un RollOver

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

J'ai un problème avec un RollOver.
Sur une feuille il y a une cellule que j'ai nommée "Chx" avec un RollOver. Quand je clique sur cette cellule, cela déclenche une macro événementielle :
- premier clic : la cellule est verte et devrait afficher le nombre 1
- deuxième clic : la cellule est jaune et devrait afficher le nombre 2
- troisième clic : la cellule est verte et devrait afficher le nombre 1
etc.

Les nombres 1 et 2 sont gérés par un compteur qui marche bien.

Comment s'y prendre pour que la cellule "Chx" affiche les nombres, parce que là je ne vois pas où j'ai bien pu me planter ?
 

Pièces jointes

Bonjour,
Pour moi le classeur en PJ fait ce qui est demandé.
Celui-ci le fait aussi avec simplement ce code en feuil1
VB:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
    Application.EnableEvents = False
    If Not Application.Intersect(target, [Chx]) Is Nothing Then
        With [Chx]
            .Value = IIf([Chx] = 1, 2, 1)
            .Interior.Color = IIf([Chx] = 1, 1179409, 65535)    'vert clair | jaune
            Application.ScreenUpdating = False: .Offset(2000, 2000).Select: Application.ScreenUpdating = True
        End With
    End If
    Application.EnableEvents = True
End Sub
 

Pièces jointes

Bonsoir Magic_Doctor, Jacky67,

Le plus simple est d'utiliser un lien hypertexte et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_FollowHyperlink(ByVal h As Hyperlink)
h.Parent = IIf(h.Parent = 1, 2, 1)
h.Parent.Interior.Color = IIf(h.Parent = 1, vbYellow, vbGreen)
End Sub
A+
 

Pièces jointes

Bonjour job,

Je ne connaissais pas Worksheet_FollowHyperlink.
C'est dommage qu'apparaisse ce commentaire.
Mais, pour revenir à ce que j'avais envoyé, le plus curieux c'est que maintenant ça marche et je ne comprends pas pourquoi ça ne marchait pas. J'utilisais cette méthode sans problème depuis pas mal de temps sans aucun problème. Maintenant, que ce soit avec ce classeur ou un autre utilisant des RollOver, je constate ce problème au comportement capricieux.
 
Bonjour job, le forum,

Avant de recevoir ta réponse, comme cette histoire m'énervait (ça bloquait plusieurs projets), j'ai posé ainsi la question à l'humanoïde (ChatGPT) :

Dans plusieurs classeurs j'utilise des RollOver pour des cellules particulières qui, quand on clique dessus, déclenchent une macro événementielle. Cela permet visuellement de bien les repérer et en plus c'est joli. Chaque cellule avec RollOver contient une formule du genre : =SIERREUR(LIEN_HYPERTEXTE(Rollover();Val_RollOver);"")
évidemment différente pour chaque cellule avec RollOver.
Val_RollOver étant une cellule virtuelle qui reprend une valeur qui s'affiche dans la cellule avec RollOver, et qui a été créée ainsi : ActiveWorkbook.Names.Add Name:="Val_RollOver", RefersTo:=compt(1), Visible:=False
Ici, la cellule avec RollOver affichera la valeur de compt(1).
Quand ça marche, ça marche, mais mon gros problème, c'est que, pour une raison qui m'échappe totalement, tous les RollOver présents dans n'importe quel classeur se bloquent, comme s'il était impossible aux cellules virtuelles de récupérer la valeur qui leur est attribuée. Par la suite, je ne sais pas pourquoi, les RollOver se remettent à fonctionner.
Il y a forcément une explication à ce comportement capricieux des RollOver, mais laquelle ?

L'humanoïde m'a conseillé de lancer, à chaque ouverture du classeur cette macro :

VB:
Sub ResetEtatExcel(Optional ByVal Full As Boolean = False)
'Sécurité pour éviter que le RollOver se plante

    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    If Full Then
        Application.CalculateFull
    Else
        Application.Calculate
    End If
End Sub

Ce curieux problème semble s'être réglé.
 

Pièces jointes

Bonjour à tous
juste en passant je lis rollover mais le fichier 1 et le dernier n'a pas de rollover
il y a juste un changement de state(si je puis m'exprimer ainsi) pour une cellule.
et pour info les deux fichiers chez moi font la même chose

Donc c'est quoi la question car il est clair qu'il ne s'agit pas ici de rollover?

Pour info
(Anglicisme informatique) Action de faire passer la souris (le curseur) sur un élément de l'écran. (Anglicisme informatique) Élément graphique qui change quand la souris passe dessus.
 
Bonjour,

L'humanoïde m'a conseillé de lancer, à chaque ouverture du classeur cette macro
Difficile de savoir si ça a une utilité ou non, vu que ça fonctionnait déjà correctement sans cela. 😉


A quoi sert cette fonction utilisée dans ton rollover de #1 :
VB:
Function Rollover()
' Pour le RollOver
    Rollover = "#"
End Function
 
Dernière édition:
Bonsoir à tous,
Donc c'est quoi la question car il est clair qu'il ne s'agit pas ici de rollover?
Quand on survole la cellule nommée "Chx" (B6), il y a une main avec l'index tendu qui apparaît. La première fois que j'ai découvert ça, celui qui avait mis en ligne cette astuce l'avait appelée "RollOver". Personnellement ça ne me dérange pas, mais si tu préfères qu'on l'appelle "Tartampion", ça ne me dérange pas davantage.

Curieusement, si on ne met pas la petite routine de l'humanoïde, ça bloque (en tout cas chez moi) le changement du nombre qui s'affiche dans la cellule sur laquelle on clique, et je ne sais absolument pas pourquoi. Quoi qu'il en soit, la mettre ne mange pas de pain.
A quoi sert cette fonction utilisée dans ton rollover de #1
Bonne question, je n'en sais fichtre rien, mais sans cette fonction énigmatique, ça ne marche pas.

Jusqu'à ce que job apporte LA solution pour se passer de la fonction énigmatique :
=SIERREUR(LIEN_HYPERTEXTE("#";Val_RollOver);"")
Ça marche !
Et hop une fonction en moins.

Bonne nuit à tous
 

Pièces jointes

Dernière édition:
Quand on survole la cellule nommée "Chx" (B6), il y a une main avec l'index tendu qui apparaît. La première fois que j'ai découvert ça, celui qui avait mis en ligne cette astuce l'avait appelée "RollOver". Personnellement ça ne me dérange pas, mais si tu préfères qu'on l'appelle "Tartampion", ça ne me dérange pas davantage.
C'est simplement le lien HyperText qui fait apparaître la main, ce n'est pas exactement le rollover, même s'il est vrai que le rollover fonctionne avec un lien Hypertext. 😉
 
Bonne question, je n'en sais fichtre rien, mais sans cette fonction énigmatique, ça ne marche pas.
j'avais fait des demo ici
j'avais fait aussi une video qui en expliquait le fonctionnement
en gros la formule renvoie une erreur voulue qui est renvoyé par la fonction et dans une cellule ref dans la fonction je change la valeur
je vais essayer de la retrouver
 
Je viens à l'instant de faire un essai avec un autre classeur en remplaçant =SIERREUR(LIEN_HYPERTEXTE(Rollover();Val_RollOver);"") par =SIERREUR(LIEN_HYPERTEXTE("#";Val_RollOver);"").
Avec =SIERREUR(LIEN_HYPERTEXTE("#";Val_RollOver);"") apparaît quand on survole la cellule, en plus de la main, un commentaire :
# - Cliquez une fois pour suivre. Cliquez et maintenez le bouton de la souris enfoncé pour sélectionner cette cellule.

Comment s'y prendre pour que n'apparaisse pas ce commentaire ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
730
Retour