Microsoft 365 Carte dynamique avec différent formats de cellule

cedricodelavega

XLDnaute Nouveau
Bonsoir,

J'ai mis en place un outil d'aide à la décision correspondant à une cartographie dynamique qui fait référence à des indicateurs choisis via la formule INDEX (colonne x et y).
J'ai mis les cellules des colonnes x et y en forme conditionnelle afin d'avoir un comparatif de valeur, puis, j'ai copié-collé mes cellules en images liées sur ma carte afin d'avoir les informations essentielles, permettant une comparaison instantanée.

Seulement, les cellules de mon tableau correspondent à différents formats personnalisés ou non (Euros, m², m²/occ, Euros/occ...) et la fonction INDEX ne me renvoie que les valeurs dans les colonnes x et y et par conséquent sur ma carte dynamique aussi.
J'ai bien essayé de changer les formats des colonnes x et y, mais lorsque le loyer s'affiche en m², ca peut prêter à confusion... et la carte dynamique devient troublante. J'ai essayé de concatener, mais rien à faire. J'ai tenté de contourner en faisant un fonction SI "cette cellule est choisie; alors renvoie telle valeur + "format de la cellule"... là, ca marche, mais je perds la mise en forme conditionnelle, et donc un outil de comparaison facile et ludique.

Mon objectif : dans les colonnes x et y, j'aimerai pouvoir conserver la valeur + le format adéquat à la cellule de référence, ainsi que la mise en forme conditionnelle afin que la lecture sur la carte soit plus confortable et beaucoup moins sujette à confusion...

Je ne sais pas si c'est clair, mais vous trouverez en pièce jointe une version test de mon document... est ce que cela vous parait possible ?

Merci d'avance de votre aide.

Cédric
 

Pièces jointes

  • Carte dynamique TEST.xlsx
    356.9 KB · Affichages: 19
Solution
Bonjour Cedricodelavega et Chris,
Vous ne trouvez rien parce que XL est magique !!!;)

Il existe un type de macro un peu particulière qui s'appelle macro événementielle. Elle se déclenche ... sur un événement.
Par exemple déclencher une macro sur un changement de valeur dans une cellule, un clic de souris, l'ouverture ou la fermeture d'un fichier.
Pour ces cas, le code est à mettre dans l'élément concerné, ouverture fermeture du classeur : la macro se met dans ThisWorkbook,
changement de valeur, clic souris la macro se met dans la feuille concernée. ( ici dan,s la feuille Carte dynamique indicateur immo )
A noter que ces macros doivent obligatoirement porter un nom particulier pour être compris d' XL. ( ici Worksheet_Change )
Donc dans...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir cedricodelavega
Il faut rajouter la mise en forme dans la formule. Par ex en X2 : =INDEX(A2:W2;1;Liste_d_indicateurs) devient
=TEXTE(INDEX(A2:W2;1;Liste_d_indicateurs);"* # ##0 €""/""occ")
Attention aux guillemets, à cause du /.
et en Y2 :=INDEX(A2:W2;1;Liste_d_indicateurs_2) devient =TEXTE(INDEX(A2:W2;1;Liste_d_indicateurs_2);"* # ##0 €""/""\m²")
La mise en forme n'affecte pas la valeur et vous consevez votre MFC.
 

chris

XLDnaute Barbatruc
Bonjour

Il y a plusieurs problèmes
  • si on concatène valeur et unités on obtient un texte et donc plus de MFC
  • le format et le contenu de tes colonnes T et U semble curieux par rapport aux titres
Il faudrait ajouter autant de MFC que de formats possibles, gérées par une formule basée sur le numéro d'indicateur
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Cedricodelavega, j'ai dit une grosse sottise ci dessus.
Donc pour me faire pardonner, une PJ.
C'est pas très joli, mais je pense qu'il n'y a guère de solution.
Après avoir selectionné les deux indicateurs, vous cliquez sur Unités.
J'ai créé dans Indicateurs la liste des formats que je récupère avec Indicateurs comme index, et je copie les deux formats dans les colonnes X et Y.
Je sais, ce n'est pas très joli mais au moins votre carte a les bonnes couleurs.
 

Pièces jointes

  • Carte dynamique TEST(1).xlsm
    366.3 KB · Affichages: 3

cedricodelavega

XLDnaute Nouveau
Bonsoir cedricodelavega
Il faut rajouter la mise en forme dans la formule. Par ex en X2 : =INDEX(A2:W2;1;Liste_d_indicateurs) devient
=TEXTE(INDEX(A2:W2;1;Liste_d_indicateurs);"* # ##0 €""/""occ")
Attention aux guillemets, à cause du /.
et en Y2 :=INDEX(A2:W2;1;Liste_d_indicateurs_2) devient =TEXTE(INDEX(A2:W2;1;Liste_d_indicateurs_2);"* # ##0 €""/""\m²")
La mise en forme n'affecte pas la valeur et vous consevez votre MFC.

Bonsoir Sylvanu,
Merci pour votre message. J'avais déjà essayé cela, mais je perdais la MFC :(
 

cedricodelavega

XLDnaute Nouveau
Bonjour

Il y a plusieurs problèmes
  • si on concatène valeur et unités on obtient un texte et donc plus de MFC
  • le format et le contenu de tes colonnes T et U semble curieux par rapport aux titres
Il faudrait ajouter autant de MFC que de formats possibles, gérées par une formule basée sur le numéro d'indicateur

Bonsoir Chris,

Merci pour votre message.
En effet, je me suis trompé de cellule dans le calcul de la colone T et U. C'est corrigé. Merci :)
 

cedricodelavega

XLDnaute Nouveau
Bonjour tout le monde,
Cedricodelavega, j'ai dit une grosse sottise ci dessus.
Donc pour me faire pardonner, une PJ.
C'est pas très joli, mais je pense qu'il n'y a guère de solution.
Après avoir selectionné les deux indicateurs, vous cliquez sur Unités.
J'ai créé dans Indicateurs la liste des formats que je récupère avec Indicateurs comme index, et je copie les deux formats dans les colonnes X et Y.
Je sais, ce n'est pas très joli mais au moins votre carte a les bonnes couleurs.
Rebonsoir Sylvanu
Merci beaucoup pour votre nouveau message.
C'est exactement ce que je cherchais dans le résultat.
Est il possible d'automatiser une macro pour l'exécuter à chaque changement d'indicateur dans le menu déroulant ?
 

cedricodelavega

XLDnaute Nouveau
C'est ce que fais la dernière PJ.
C'est pour ça que j'ai remis les listes déroulantes dans les cellules ce qui permet de détecter un changement de valeur.
Sur ce, bonne nuit les petits ! :)
Bonjour Sylvanu,
J'ai bien regardé le fichier carte dynamique TEST (V3) : je comprends techniquement les formules EQUIV et INDEX auxquelles vous faites appel, mais je ne vois pas de macro qui indique aux colonnes X et Y de rassembler valeur et format comme dans la version TEST 1.

Pourriez vous m'expliquer afin que je puisse comprendre svp ?
Merci encore
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cedricodelavega et Chris,
Vous ne trouvez rien parce que XL est magique !!!;)

Il existe un type de macro un peu particulière qui s'appelle macro événementielle. Elle se déclenche ... sur un événement.
Par exemple déclencher une macro sur un changement de valeur dans une cellule, un clic de souris, l'ouverture ou la fermeture d'un fichier.
Pour ces cas, le code est à mettre dans l'élément concerné, ouverture fermeture du classeur : la macro se met dans ThisWorkbook,
changement de valeur, clic souris la macro se met dans la feuille concernée. ( ici dan,s la feuille Carte dynamique indicateur immo )
A noter que ces macros doivent obligatoirement porter un nom particulier pour être compris d' XL. ( ici Worksheet_Change )
Donc dans Feuil1 vous allez trouvez ceci :
VB:
' On arrive ici quand une valeur change dans la feuille'
Sub Worksheet_Change(ByVal Target As Range)
    ' On regarde si les modifications ont lieu dans les cellules qui nous interessent'
    If Not Intersect(Target, Range("$Z$1:$Z$2")) Is Nothing Then
        ' Si oui alors on récupère le format et on l'applique aux colonnes X et Y
        Range("X:X").NumberFormat = [Unité1]
        Range("Y:Y").NumberFormat = [Unité2]
    End If
End Sub
J'ai maché le travail à la macro en extrayant le format à appliquer ( Unité1 et Unité2 ), mais on aurait pu le faire par macro. C'est un choix.
Si vous changez la position des deux listes en Z1Z2 pensez à changer aussi le code, Range("$Z$1:$Z$2") en Range(x,y).
J'ai fait le code le plus simple possible.
 

cedricodelavega

XLDnaute Nouveau
Bonjour Cedricodelavega et Chris,
Vous ne trouvez rien parce que XL est magique !!!;)

Il existe un type de macro un peu particulière qui s'appelle macro événementielle. Elle se déclenche ... sur un événement.
Par exemple déclencher une macro sur un changement de valeur dans une cellule, un clic de souris, l'ouverture ou la fermeture d'un fichier.
Pour ces cas, le code est à mettre dans l'élément concerné, ouverture fermeture du classeur : la macro se met dans ThisWorkbook,
changement de valeur, clic souris la macro se met dans la feuille concernée. ( ici dan,s la feuille Carte dynamique indicateur immo )
A noter que ces macros doivent obligatoirement porter un nom particulier pour être compris d' XL. ( ici Worksheet_Change )
Donc dans Feuil1 vous allez trouvez ceci :
VB:
' On arrive ici quand une valeur change dans la feuille'
Sub Worksheet_Change(ByVal Target As Range)
    ' On regarde si les modifications ont lieu dans les cellules qui nous interessent'
    If Not Intersect(Target, Range("$Z$1:$Z$2")) Is Nothing Then
        ' Si oui alors on récupère le format et on l'applique aux colonnes X et Y
        Range("X:X").NumberFormat = [Unité1]
        Range("Y:Y").NumberFormat = [Unité2]
    End If
End Sub
J'ai maché le travail à la macro en extrayant le format à appliquer ( Unité1 et Unité2 ), mais on aurait pu le faire par macro. C'est un choix.
Si vous changez la position des deux listes en Z1Z2 pensez à changer aussi le code, Range("$Z$1:$Z$2") en Range(x,y).
J'ai fait le code le plus simple possible.
Rebonjour,
Je suis clairement mitigé entre un sentiment de frustration et d'admiration !!
Cela fait a peu près un an que j'ai vraiment mis les mains dans excel, et je vais de surprise en surprise quant aux possibilités de ce logiciel. :)
Merci beaucoup pour votre aide en tous cas ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Juste pour enfoncer le clou, sachez que vous n'atteindrez jamais les limites d' XL.
On apprends chaque jour, au gré d'un fil, une nouvelle astuce, formule, graphique ou autre.
D'où le plaisir d'apprendre.
J'ai commencé avec XL97, j'en suis à XL2019 et il y a encore des trucs que je ne connais pas. Et c'est tant mieux.
Bonne journée.
 

cedricodelavega

XLDnaute Nouveau
Re,
Juste pour enfoncer le clou, sachez que vous n'atteindrez jamais les limites d' XL.
On apprends chaque jour, au gré d'un fil, une nouvelle astuce, formule, graphique ou autre.
D'où le plaisir d'apprendre.
J'ai commencé avec XL97, j'en suis à XL2019 et il y a encore des trucs que je ne connais pas. Et c'est tant mieux.
Bonne journée.
Okay, bon, je sens que la route est encore longue (et infinie).
Merci encore pour votre aide !!
 

Discussions similaires

Statistiques des forums

Discussions
314 587
Messages
2 110 981
Membres
110 999
dernier inscrit
Shiny