Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 RollOver sur cell sans boucle peut on modifier le lien avec une liste(array en VBA)

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
suite a une réponse qui a été donnée sur le forum avec un lien vers youtube
j'ai testé l'astuce et elle fonctionne
cependant je me demande si l'on peut pas remplacer la liste de ref par un array dans la fonction
en effet
voila l'astuce
  1. je fait une liste en A2:A8( j'en ai fait un tableau structuré mais c'est pas obligé)
  2. je vais prendre une cellule ailleurs et je vais lui donner le nom de Ref_cel
  3. je vais prendre une autre plage de même dimension que ma liste ayant les même valeurs
  4. dans la première cellule de cette plage je vais y mettre cette formule =SIERREUR(LIEN_HYPERTEXTE(getvalCel(B2));B2) et je l’étends sur les 7 lignes de cette plage
  5. dans un module standard je lui met cette fonction
VB:
Public Function getvalCel(nom_cellule As Range)
Range("Ref_Cel").Value = nom_cellule.Value
End Function

j'ajoute une mise en forme conditionelle à cette plage


et voila le resultat


donc sa fonctionne
j'ai bien l'impression que même si dans cette plage de reception ce n'est pas des liens , c'est bel et bien le fait qu'il y est la fonction lienhypertext qui fait le repeat et donc fait office d'event mouse move

deux questions

1° peut on dans ce contexte dans la fonction par exemple remplacer la plage liste originale par un array dans la fonctions
moyennant des modifs dans la formule utilisant l'indexage par la fonction ligne() par exemple sur un array

2° et remplacer la cellule D1 par un name
 

Pièces jointes

  • roll over sur cell.xlsm
    14.8 KB · Affichages: 12
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
re @patricktoulon
pourquoi dans tes function tu as X as Long alors que tu ne t'en sers pas … ?
VB:
=SIERREUR(LIEN_HYPERTEXTE(rolloverX(1));"titi")
' etc …
VB:
Public Function RollOverX(X As Long)
Range("Ref_Cel").Value = Application.Caller.Value
' OU
Names("Ref_X").Value = Application.Caller.Value
End Function

Attention tu y a mis un virgule au lieu d'un point :


Cf. update du fichier post#79
 

patricktoulon

XLDnaute Barbatruc
re ton tableau1 ne peut pas fonctionner
tu utilise le nom Rollover1 pour la cellule et c'est aussi le nom de ma première fonction
d'ailleurs on voit bien que c'est le numero de ligne qui change dans la cellule et non la valeur de la cellule survollée
 

RyuAutodidacte

XLDnaute Impliqué
Bonjour ryu

donc
1° tout mon exemple ne fonctionne plus dans ton fichier
2° et dans ta feuille le tableau 1 ne fonctionne pas
Regarde la pièce jointe 1178375
Bon c'est corrigé
je t'ai aussi remplacé la virgule par le point
tu ne m'as pas répondu à :

le fichier :
 

Pièces jointes

  • roll over sur cell V 4 .xlsm
    216.5 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
bon j'ai fait le ménage
j'ai supprimer ma feuille exemple
j'ai supprimer le names inutiles en doublons avec la fonction
j'ai supprimé le module de mes fonctions
bref je n'ai gardé que le tiens

dans rollover1 tu utilise "Row"
ben dans la formule MFC il faut que tu l'utilise aussi c'est évident

donc si
VB:
Function RyuRollOver1()
    Range("RollOver1").Value = Application.Caller.Row
End Function

ben la formule dans la MFC doit fonctionner avec le numero de ligne et non la valeur


 

RyuAutodidacte

XLDnaute Impliqué
Pourquoi double corrections ? j'avais tout corriger pour le tient et le mien
et y pas de doublon entre le tiens et le miens car la façon d'insérer les donnée son différentes aussi (titi etc …)
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…