Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3051 connectés 

 

 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  94  95  96  ..  111  112  113  114  115  116
Auteur Sujet :

[Topic Unique] Excel : Keep calm and Pivot Table !

n°3426996
arnuche
Posté le 14-10-2022 à 18:52:12  profilanswer
 

Reprise du message précédent :
Non ça ne va pas, il me sort une date en 2134 (que je sauve en matriciel ou pas d'ailleurs) :heink:  
Pour procéder par étapes, il faudrait peut-être déjà trouver une formule qui renvoie bien le 01-11-2020 pour la société "Bidule" et puis trouver le moyen d'intégrer ça dans une formule qui permet d'incrémenter vers la droite pour trouver la date de la 2ème vente complète de la même société (29-03-2021).
Je me demande si SOMMEPROD est bien approprié pour chercher une date.


Message édité par arnuche le 14-10-2022 à 18:52:45
mood
Publicité
Posté le 14-10-2022 à 18:52:12  profilanswer
 

n°3426998
MaybeEijOr​Not
but someone at least
Posté le 14-10-2022 à 19:34:17  profilanswer
 

Peux-tu refiler le fichier avec les bidules machins, parce que chez moi avec des données différentes ça fonctionnait.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427000
arnuche
Posté le 14-10-2022 à 19:53:54  profilanswer
 

Voilà ;
https://www.cjoint.com/c/LJorUjbVYOB
Donc je rappelle que je cherche 2 formules ;
-pour les ventes (à partir de H26) : seulement quand le solde est à 0
-pour les achats (à partir de B26) : seulement le premier et ceux qui suivent les ventes totales (donc 02-09-2018 et 04-05-2022 pour "Machin", uniquement 15-12-2018 pour "Tatol" ...).
 ;)

n°3427001
MaybeEijOr​Not
but someone at least
Posté le 14-10-2022 à 22:38:40  profilanswer
 

H26 (formule matricielle) à déployer sur tout ton tableau :

Code :
  1. {=PETITE.VALEUR(($A$2:$A$14=$G26)*($E$2:$E$14=0)*($B$2:$B$14);NBVAL($A$2:$A$14)-NB.SI.ENS($A$2:$A$14;$G26;$E$2:$E$14;"0" )+H$25)}
 

B26 (formule matricielle) à déployer sur la colonne uniquement :

Code :
  1. {=PETITE.VALEUR(($A$2:$A$14=$A26)*($B$2:$B$14);NBVAL($A$2:$A$14)-NB.SI($A$2:$A$14;$A26)+1)}
 

C26 (formule matricielle) à déployer sur le reste du tableau :

Code :
  1. {=PETITE.VALEUR(($A$2:$A$14=$A26)*($B$2:$B$14)*($B$2:$B$14>H26);NBVAL($A$2:$A$14)-NB.SI.ENS($A$2:$A$14;$A26;$B$2:$B$14;">"&H26)+1)}

Message cité 1 fois
Message édité par MaybeEijOrNot le 14-10-2022 à 22:56:39

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427003
arnuche
Posté le 15-10-2022 à 00:37:22  profilanswer
 

Wow, costaud ça, merci beaucoup ! :)  
Je ne pige pas comment tu as pu trouver des formules pareilles, pas évidentes du tout.
 
Maintenant je peux rajouter SIERREUR(...);AUJOURDHUI() dans la colonne revente parce que s'il n'y a pas de revente (ou qu'il y en a mais que j'en ai racheté après) c'est que je l'ai encore donc j'ai besoin de la date d'aujourd'hui pour ma ligne du temps.
Sauf qu'alors je vais avoir plein de dates d'aujourd'hui sur chaque ligne dans mon tableau récapitulatif après la dernière revente, je dois voir si ça pose souci ou pas.
 
edit : ou je m'arrange pour qu'il n'y ait qu'une seule date du jour par ligne avec une formule du genre "si date d'aujourd'hui à gauche, mettre du vide", comme ça la date d'aujourd'hui serait la dernière donnée de la ligne (pour les actions que j'ai encore, pour les autres ce serait la date de dernière vente).

Message cité 1 fois
Message édité par arnuche le 15-10-2022 à 10:43:33
n°3427008
MaybeEijOr​Not
but someone at least
Posté le 15-10-2022 à 10:57:02  profilanswer
 

Je ne sais pas si l'alcool a aidé ou non à trouver ces formules. :lol:

 

Pour expliquer, dans la formule en H26, la première partie de petite.valeur définit une nouvelle matrice :
- si valeur égale à G26 dans la colonne A alors ça vaut 1 sinon 0,
- si valeur égale à 0 dans la colonne E alors ça vaut 1 sinon 0,
- valeur de la colonne B (la date),
- on multiplie ces 3 matrices pour en avoir qu'une seule et on obtient soit la date (1x1xdate) soit 0 (0x1xdate, 1x0xdate, 0x0xdate).

 

On a donc réussit à discriminer nos dates en fonction de deux critères, il ne reste plus qu'à sélectionner une de ces valeurs. On se retrouve avec plein de 0 et quelques dates, quand on prend la première plus petite on récupère donc un 0, la deuxième aussi un 0, seules les plus grandes valeurs sont des dates. Il faut donc éliminer les 0 en comptant le nombre de valeurs ne correspondant pas aux précédents critères. Pour cela je compte le nombre de valeurs qu'il existe avec NBVAL puis je soustrait la nombre de valeurs qui correspondent aux critères (valeur égale à G26 dans la colonne A et valeur égale à 0 dans la colonne E) avec NB.SI.ENS ce qui donne le dernier 0, on ajoute 1 (H25) pour alors tomber sur la première date restante, puis 2 pour la seconde, etc.

 

Pour ton histoire de AUJOURDHUI(), oui je pense qu'en regardant la valeur juste à gauche ça te permet de faire ce que tu veux.


Message édité par MaybeEijOrNot le 15-10-2022 à 12:22:52

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427010
arnuche
Posté le 15-10-2022 à 11:50:41  profilanswer
 

Woaw (c'est pour changer de wow  :D ), vraiment ingénieux !  ;)

n°3427068
nicko
Posté le 17-10-2022 à 13:46:43  profilanswer
 

MaybeEijOrNot a écrit :

Tes devis sont faits sur Excel ?


C'est pas mes devis, c'est des devis qu'on peut faire sur le configurateur de produit de notre fournisseur (surement SAP qui tourne derrière)

n°3427074
arnuche
Posté le 17-10-2022 à 14:11:16  profilanswer
 

arnuche a écrit :

Wow, costaud ça, merci beaucoup ! :)  
Je ne pige pas comment tu as pu trouver des formules pareilles, pas évidentes du tout.
 
Maintenant je peux rajouter SIERREUR(...);AUJOURDHUI() dans la colonne revente parce que s'il n'y a pas de revente (ou qu'il y en a mais que j'en ai racheté après) c'est que je l'ai encore donc j'ai besoin de la date d'aujourd'hui pour ma ligne du temps.
Sauf qu'alors je vais avoir plein de dates d'aujourd'hui sur chaque ligne dans mon tableau récapitulatif après la dernière revente, je dois voir si ça pose souci ou pas.
 
edit : ou je m'arrange pour qu'il n'y ait qu'une seule date du jour par ligne avec une formule du genre "si date d'aujourd'hui à gauche, mettre du vide", comme ça la date d'aujourd'hui serait la dernière donnée de la ligne (pour les actions que j'ai encore, pour les autres ce serait la date de dernière vente).


Pour être complet je donne les formules que j'ai modifiées ;
- d'abord en I26, date de 2è vente (les 14 de la formule de MaybeEijOrNot sont devenus 15 parce que j'ai rajouté une ligne) ;

Code :
  1. =SI(RECHERCHE(2;1/($A$2:$A$15=$G26);$E$2:$E$15)=0;"";SI(H26=AUJOURDHUI();"";SIERREUR(PETITE.VALEUR(($A$2:$A$15=$G26)*($E$2:$E$15=0)*($B$2:$B$15);NBVAL($A$2:$A$15)-NB.SI.ENS($A$2:$A$15;$G26;$E$2:$E$15;"0" )+I$25);AUJOURDHUI())))


à comparer à la 1ère vente en H26 ;

Code :
  1. =SIERREUR(PETITE.VALEUR(($A$2:$A$15=$G26)*($E$2:$E$15=0)*($B$2:$B$15);NBVAL($A$2:$A$15)-NB.SI.ENS($A$2:$A$15;$G26;$E$2:$E$15;"0" )+H$25);AUJOURDHUI())


J'ai donc rajouté 2 choses : si la case précédente contient la date d'aujourd'hui, ne rien mettre, et pareil si le dernier solde pour cette action est de 0 avec la fonction RECHERCHE (parce que sinon il met la date d'aujourd'hui alors que je ne l'ai plus).
 
- puis celle de J26, date de 3è vente et valable pour les suivantes ;

Code :
  1. =SI(I26="";"";SI(RECHERCHE(2;1/($A$2:$A$15=$G26);$E$2:$E$15)=0;"";SI(I26=AUJOURDHUI();"";SIERREUR(PETITE.VALEUR(($A$2:$A$15=$G26)*($E$2:$E$15=0)*($B$2:$B$15);NBVAL($A$2:$A$15)-NB.SI.ENS($A$2:$A$15;$G26;$E$2:$E$15;"0" )+J$25);AUJOURDHUI()))))


Rajout d'une chose : si la case précédente est vide ne rien mettre parce que sinon il remet la date d'aujourd'hui.
 
Et comme ça tous les cas de figure sont prévus.
 
J'ai aussi transformé la 1ère liste en tableau pour que les formules se mettent à jour dans les listes d'achats et de ventes quand je rajoute une ligne et j'ai tout mis sur des feuilles différentes pour bien séparer les achats, les ventes et autres infos dont j'ai besoin pour mon graphique.


Message édité par arnuche le 17-10-2022 à 14:12:35
n°3427077
john_tgv
#LaurentCambon2027 ♥♥♥ (^▽^)
Posté le 17-10-2022 à 15:06:27  profilanswer
 

Salut les gens, :hello:
J'ai besoin d'aide pour l'immense n00b que je suis. [:fight]  
 
Nous avons des fichiers excel dont certaines cellules contiennent des liens hypertextes (renvoyant vers d'autres fichiers sur le sharepoint de la COGIP). Nous avons parfois besoin de modifier ces cellules pour y rajouter du texte mais sans avoir à suivre le lien (suis-je clair? [:transparency] ).
 
Pour le moment, la seule solution trouvée, c'est d'appuyer sur la touche Alt du clavier tout en effectuant un double click pour modifier le texte sans suivre le lien.
 
On cherche une solution pour automatiser ça à toute une feuille (sans pour autant casser tous les liens, simplement les "désactiver temporairement" ). Est-ce possible? :gratgrat:
 
Merci d'avance pour votre aide. :)
 
[:ignition]


---------------
P'tit tigrou déguisé en Quasi-modo => kimouss et autres sorties toulousaines <= "Elton john du 13/9/1980" dixit zephiel...
mood
Publicité
Posté le 17-10-2022 à 15:06:27  profilanswer
 

n°3427079
arnuche
Posté le 17-10-2022 à 15:17:08  profilanswer
 

john_tgv a écrit :

Nous avons des fichiers excel dont certaines cellules contiennent des liens hypertextes (renvoyant vers d'autres fichiers sur le sharepoint de la COGIP). Nous avons parfois besoin de modifier ces cellules pour y rajouter du texte mais sans avoir à suivre le lien (suis-je clair? [:transparency] ).
 
Pour le moment, la seule solution trouvée, c'est d'appuyer sur la touche Alt du clavier tout en effectuant un double click pour modifier le texte sans suivre le lien.


Tu veux dire modifier l'adresse sans qu'il n'ouvre la page dans le navigateur ? Il suffit de cliquer sans relâcher le bouton de la souris pendant quelques secondes.
 

john_tgv a écrit :

On cherche une solution pour automatiser ça à toute une feuille (sans pour autant casser tous les liens, simplement les "désactiver temporairement" ). Est-ce possible? :gratgrat:


Là je comprends moins ce que tu veux faire, si tu veux les modifier c'est un à un.

n°3427080
john_tgv
#LaurentCambon2027 ♥♥♥ (^▽^)
Posté le 17-10-2022 à 15:27:17  profilanswer
 

Je savais qu'j'étais pas clair. [:stephan_lapaix]  :o

 

En gros, nos cellules affichent ce genre de truc: Clique ici si tu veux voir mon Q.
Je souhaite trouver une solution permettant de modifier facilement la cellule (pour, par exemple, arriver à ça: Clique ici si tu veux voir mon QI ) mais sans avoir à cliquer longuement sur chaque cellule (ou appuyer sur ALT) pour ne pas activer le lien à chaque fois qu'on veut modifier une des nombreuses cellules dans la feuille (ça peut être fastidieux s'il y a beaucoup de modif à faire).

 

Bref, une fonction/bouton en VBA/ whatever permettant de "désactiver" les liens le temps de modifier les cellules puis un autre truc pour tout remettre d’aplomb.

 

Suis-je clair cette fois-ci? :sweat:


Message édité par john_tgv le 17-10-2022 à 15:28:46

---------------
P'tit tigrou déguisé en Quasi-modo => kimouss et autres sorties toulousaines <= "Elton john du 13/9/1980" dixit zephiel...
n°3427083
arnuche
Posté le 17-10-2022 à 15:38:51  profilanswer
 

Peut-être désactiver les liens hypertexte puis les réactiver quand leur modification est terminée ;
https://support.microsoft.com/fr-fr [...] 8b67ebe3b0

Citation :

Dans Excel 2010 et versions ultérieures :
 
    Sélectionnez toutes les cellules contenant des liens hypertexte, ou appuyez sur Ctrl+A pour les sélectionner toutes.
 
    Cliquez avec le bouton droit, puis cliquez sur Supprimer les liens hypertexte.


Message édité par arnuche le 17-10-2022 à 15:39:33
n°3427086
arnuche
Posté le 17-10-2022 à 15:54:41  profilanswer
 

Je viens de tester, il ne faut même pas faire qqch de spécial pour les réactiver ; dès qu'on en modifie un et qu'on clique sur enter, ça redevient un lien.
Mais on peut désactiver ça complètement dans les options d'Excel, voir les autres paragraphes du tuto que j'ai mis ci-dessus.

n°3427092
john_tgv
#LaurentCambon2027 ♥♥♥ (^▽^)
Posté le 17-10-2022 à 16:21:28  profilanswer
 

Je viens de voir que le collègue qui a fait ce tableau a en fait créé un lien associé à la cellule et non au texte de celle-ci. Et c'est probablement ça qui empêche de suivre ton conseil. [:tinostar]
Bref, il est parti pour tout recommencer visiblement. Plus de 500 liens à refaire. [:skylvind:8]

Message cité 1 fois
Message édité par john_tgv le 17-10-2022 à 16:21:56

---------------
P'tit tigrou déguisé en Quasi-modo => kimouss et autres sorties toulousaines <= "Elton john du 13/9/1980" dixit zephiel...
n°3427096
arnuche
Posté le 17-10-2022 à 17:00:14  profilanswer
 

john_tgv a écrit :

Je viens de voir que le collègue qui a fait ce tableau a en fait créé un lien associé à la cellule et non au texte de celle-ci.


C'est à dire, ça se présente comment ? Il est où le lien ?

n°3427101
MaybeEijOr​Not
but someone at least
Posté le 17-10-2022 à 18:56:25  profilanswer
 

nicko a écrit :


C'est pas mes devis, c'est des devis qu'on peut faire sur le configurateur de produit de notre fournisseur (surement SAP qui tourne derrière)


Donc c'est ta méthode d'importation des données qui n'est pas bonne.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427111
nicko
Posté le 18-10-2022 à 10:23:20  profilanswer
 

MaybeEijOrNot a écrit :


Donc c'est ta méthode d'importation des données qui n'est pas bonne.


Non c'est l'outil qui à la fin me permet d'exporter et me donne un .xls

n°3427117
MaybeEijOr​Not
but someone at least
Posté le 18-10-2022 à 12:51:12  profilanswer
 

Et tu ne peux pas exporter autre chose comme un CSV ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427137
kmara2
Posté le 18-10-2022 à 20:38:54  profilanswer
 

Salut, il y a possibilité de mettre u filtre top 5 dans un TCD + un filtre > à 0 (si valeur = 0 alors ne pas afficher)
 
Car je joue avec des tcd pour afficher sur un superbe tableau de bord des données de consommations de secteur sauf qu'une colonne de la base de données contient quelques données pour quelques secteurs mais pas tous !  
 
Là tout va bien un beau top 5 :
https://www.hebergeur-image.com/upload/77.159.187.254-634ef26c97cca.PNG
 
Là vu que les données sont toutes à 0 il me ressort toutes les lignes les considérant toutes comme égales donc il affiche des centaines de ligne  :??:  
https://www.hebergeur-image.com/upload/77.159.187.254-634ef2551acb2.PNG
 
Une idée pour fictivement garder un top5 de ligne vide plutôt que toute la liste ? Merci,

Message cité 1 fois
Message édité par kmara2 le 18-10-2022 à 20:41:20

---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3427138
Aardpeer
Transmuteur grognon de Bluxte
Posté le 18-10-2022 à 20:42:00  profilanswer
 

tu remets un filtre au niveau global avec tes données ? comme ca tu peux sortir les valeurs =0

n°3427140
kmara2
Posté le 18-10-2022 à 21:00:34  profilanswer
 

Pas compris  [:biiij:1]


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3427144
Aardpeer
Transmuteur grognon de Bluxte
Posté le 18-10-2022 à 21:24:52  profilanswer
 

en haut du tableau croisé dynamique, tu as ce qui est appelé des filtres globaux. Si tu mets tes données dans cette case-là tu peux filtrer sur les valeurs des données.
https://cdn-adclh.nitrocdn.com/zciqOWZgDznkuqFpvIJsLUeyHlJtlHxe/assets/static/source/rev-4fa602f/wp-content/uploads/2016/06/Filter-Data-in-a-Pivot-Table-in-Excel-All-filters.png
Là où c'est indiqué "Report filter"

n°3427145
arnuche
Posté le 18-10-2022 à 21:48:52  profilanswer
 

kmara2 a écrit :

Salut, il y a possibilité de mettre u filtre top 5 dans un TCD + un filtre > à 0 (si valeur = 0 alors ne pas afficher)
 
(...)
Là vu que les données sont toutes à 0 il me ressort toutes les lignes les considérant toutes comme égales donc il affiche des centaines de ligne
 
Une idée pour fictivement garder un top5 de ligne vide plutôt que toute la liste ? Merci,


C'est contradictoire, en haut tu demandes comment ne pas afficher les 0 et en-dessous tu veux un top 5 même si elles sont à 0. :??:  
D'ailleurs, selon quel critère faudrait-il en garder 5 si elles ont toutes la même valeur ?
 
Pour omettre les lignes dont le total est 0, j'en parlais justement récemment ;
https://forum.hardware.fr/hfr/Windo [...] m#t3426351
Sauf qu'il n'en restera aucune si elles sont toutes à 0, d'où ma question sur l'autre critère.

n°3427146
kmara2
Posté le 18-10-2022 à 21:51:00  profilanswer
 

@Aardpeer Bah non je peux juste les sélectionner avec les cases à cocher  :??: et en plus j'en ai besoin dans la partie ligne pour afficher les libellés et les montants en valeur

Message cité 1 fois
Message édité par kmara2 le 18-10-2022 à 21:52:40

---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3427163
nicko
Posté le 19-10-2022 à 11:17:26  profilanswer
 

MaybeEijOrNot a écrit :

Et tu ne peux pas exporter autre chose comme un CSV ?


Evidement non, ça me laisse pas le choix ... c'est un outil web basé sur SAP. C'est à prendre ou à laisser (pour rappel c'est un machin mis en place par un fournisseur c'est pas interne à nous, comme ça ils font plus les devis eux, on fait leur boulot)

n°3427174
Aardpeer
Transmuteur grognon de Bluxte
Posté le 19-10-2022 à 12:15:17  profilanswer
 

kmara2 a écrit :

@Aardpeer Bah non je peux juste les sélectionner avec les cases à cocher  :??: et en plus j'en ai besoin dans la partie ligne pour afficher les libellés et les montants en valeur


Je viens de tester et ca fonctionne...
https://rehost.diberie.com/Picture/Get/r/94091
(le TCD à gauche a le filtre global activé, à droite non, les deux sont filtrés en ligne par top 5)
(les valeurs sont pas les mêmes c'est normal :o pour éviter ca il faut d'abord filtrer les lignes puis enlever les 0 au filtre global)

Message cité 1 fois
Message édité par Aardpeer le 19-10-2022 à 12:18:54
n°3427229
john_tgv
#LaurentCambon2027 ♥♥♥ (^▽^)
Posté le 20-10-2022 à 10:01:11  profilanswer
 

arnuche a écrit :


C'est à dire, ça se présente comment ? Il est où le lien ?


:hello:

 

Je voulais poster une capture d'écran mais le concepteur du fichier l'a supprimé avant remaniement complet.  [:spamatounet]
Je le laisse faire sa sauce et on verra si la seconde version sera plus pratique sur cet aspect.

 

Merci à vous pour votre aide.  [:cerveau charlest]

 

[:ignition]


---------------
P'tit tigrou déguisé en Quasi-modo => kimouss et autres sorties toulousaines <= "Elton john du 13/9/1980" dixit zephiel...
n°3427233
Hegemonie
Posté le 20-10-2022 à 11:56:35  profilanswer
 

Bonjour,

 

J'ai un fichier excel avec une macro qui lit les données d'une autre feuille, les copie dans un onglet "DATA", et remplit un tableau sur l'onglet "extraction" en fonction de quelques critères présents sur cette page.

 

Le souci, c'est que le fait d'avoir cette macro sur cette page m'empêche d'utiliser le copier/coller.

 

Etant sur 365 au boulot, je dois "autoriser" l'usage des macros à chaque fois que j'ouvre le fichier. Si je ne le fais pas, j'ai la possibilité de faire un c/c d'où mon diag concernant la macro qui bloque le c/c.

 

Est ce que c'est une problématique connue, voire voulue?
Est ce qu'il y a un moyen de récupérer cette fonctionnalité?

 

Cas d'usage : création d'un tableau de suivi d'activité de ~1000 lignes avec 20 colonnes.

 

Merci :jap:

 

EDIT : j'ai trouvé et partagé une solution palliative très moche mais qui fonctionne : j'utilise ma macro, j'enregistre, je ferme le fichier, je le rouvre et je n'autorise pas les macros :o


Message édité par Hegemonie le 20-10-2022 à 13:40:52
n°3427235
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 13:52:19  profilanswer
 

Tu peux mettre la macro dans un second classeur que tu ouvres quand tu veux utiliser la macro. Sinon tu ouvres le classeur sans macro. Le classeur avec la macro modifie le classeur sans macro.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427239
arnuche
Posté le 20-10-2022 à 16:05:36  profilanswer
 

À propos de macro, j'ai un souci particulier : j'ai trouvé ce code qui permet de mettre à jour la valeur max d'un graphique quand je change le contenu de la cellule H2 ;

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MaximumScale = Range("H2" )
  3. End Sub


Cette variante fonctionne aussi ;

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$H$2" Then
  3.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MaximumScale = Range("H2" )
  4. End If
  5. End Sub


Sauf que j'ai voulu tester ça avec la fonction =AUJOURDHUI() (c'est pour ma ligne du temps) mais alors il ne se met pas à jour à chaque changement de date alors que le contenu de la cellule a bien changé. :??:  
Apparemment il faut que je tape qqch dans la cellule pour qu'il tienne compte du changement et là le graphique se met bien à jour mais ça ne marche pas si c'est une formule à laquelle je ne touche pas.
 
Une idée pour que le changement de résultat de la formule soit pris en compte sans que je ne doive toucher à la cellule ?
 
edit :
J'ai essayé autre chose : dans le code VBA je fais référence à une cellule (H2) qui elle-même contient =C3+F3, sachant que C3 contient =AUJOURDHUI() et F3 contient 0. Si je remplace 0 par 400 en F3, le total en H2 et le graphique se mettent bien à jour, pourtant la formule en H2 n'a pas changé donc logiquement ça devrait fonctionner aussi avec AUJOURDHUI() directement dans H2  :??:
Je verrai si demain il tient compte du nouveau total.


Message édité par arnuche le 20-10-2022 à 18:03:28
n°3427251
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 19:15:28  profilanswer
 

As-tu essayé un Refresh sur le graphique ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427256
arnuche
Posté le 20-10-2022 à 19:57:33  profilanswer
 

MaybeEijOrNot a écrit :

As-tu essayé un Refresh sur le graphique ?


Ah non, bonne idée, je dois faire comment pour cumuler les 2 fonctions ?
J'ai testé ça mais il me dit qu'il y a un souci avec le nom de la 2è partie ("nom ambigu détecté : Worksheet_Change" ) ;

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MaximumScale = Range("H2" )
  3.    
  4. End Sub
  5. Private Sub Worksheet_Change(ByVal Target As Range)
  6.     ActiveSheet.ChartObjects("Graphique 1" ).Refresh
  7. End Sub

n°3427258
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 20:05:14  profilanswer
 

Là, ton problème c'est que tu crées deux macros suivant le même évènement, il faut tout mettre dans la même macro.
 
Moi je tenterai plus de jouer sur l'ouverture du fichier puisque la date change lors de l'ouverture uniquement :

Code :
  1. Private Sub Workbook_Open()
  2. Application.ActiveSheet.ChartObjects("Graphique 1" ).Refresh
  3. End Sub


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427260
arnuche
Posté le 20-10-2022 à 20:12:57  profilanswer
 

Ok, mais n'oublie pas qu'il me faut aussi la 1ère partie pour signaler que j'ai besoin d'une cellule de référence comme "MaximumScale".
Donc il faut intégrer ceci ;

Code :
  1. ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MaximumScale = Range("H2" )


Message édité par arnuche le 20-10-2022 à 20:14:14
n°3427261
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 20:18:33  profilanswer
 

Le but d'utiliser le Refresh c'est de se dire que l'échelle est réglée en automatique et que c'est simplement les données qui ne sont rafraichies, si elles se rafraichissent bien alors l'échelle s'adaptera toute seule.
Penser à reset l'échelle en "automatique".
Et c'est simplement une hypothèse.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427263
arnuche
Posté le 20-10-2022 à 20:26:39  profilanswer
 

Je préfère me référer à une cellule (notamment parce qu'il n'y aura pas toujours de date d'aujourd'hui dans mon tableau alors que je veux que mon graphique aille jusqu'aujourd'hui).
On fait comment pour mettre 2 codes sur la même feuille ?

n°3427269
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 20:49:07  profilanswer
 

Dans ce cas là mets juste (je suppose que c'est l’abscisse que tu veux modifier) :

Code :
  1. Private Sub Workbook_Open()
  2.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlCategory).MaximumScale = Range("H2" )
  3. End Sub


Dans le ThisWorkbook de Microsoft Visual Basic.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427272
arnuche
Posté le 20-10-2022 à 23:00:57  profilanswer
 

Pas mal sauf que ça ne marche que si j'ai bien fermé sur cette feuille sinon j'ai un message d'erreur quand il ré-ouvre. Alors j'ai remplacé ActiveSheet par Worksheets("Graphique" ), sauf que là il me change la valeur minimale de l'axe  :heink:  
Et si je mets xlValue au lieu de xlCategory et que je rajoute .Value à la fin, ça ne marche aussi que si j'ouvre sur la bonne feuille, sinon il me change les valeurs min et max  :o  
 
Je devrais peut-être remettre le code initial sur la feuille en question et juste un refresh du graphique dans la partie ThisWorkbook.
 
edit ;
J'ai mis ça sur la feuille du graphique et il n'y a plus de bug à l'ouverture ;

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$C$2" Then
  3.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MinimumScale = Range("C2" )
  4. End If
  5. If Target.Address = "$C$3" Then
  6.     ActiveSheet.ChartObjects("Graphique 1" ).Chart.Axes(xlValue).MaximumScale = Range("C3" )
  7. End If
  8. End Sub


Il est possible que j'aie du inverser les axes lors de la création du graphique, ce qui expliquerait pourquoi je dois mettre xlValue au lieu de xlCategory.
Ça marche bien quand je change les valeurs directement dans les cellules (le graphique bouge direct) mais je risque d'avoir le même souci qu'au départ, à savoir pas de mise à jour si je ne modifie pas le contenu de la cellule et qu'il y a juste AUJOURDHUI().
 
Et j'ai mis ça sur le ThisWorkbook ;

Code :
  1. Private Sub Workbook_Open()
  2.     Worksheets("Graphique" ).ChartObjects("Graphique 1" ).Chart.Refresh
  3. End Sub


Reste à voir si cette méthode de refresh aura un effet à chaque changement de date, et je ne sais pas si le .Chart devant le .Refresh est utile.
 
Je peux tenter aussi Worksheet_Calculate au lieu de Worksheet_Change, ce qui pourrait obliger à recalculer la date lors du refresh.
 
edit 2 ;
Il plante avec Worksheet_Calculate au lieu de Worksheet_Change.


Message édité par arnuche le 21-10-2022 à 00:43:44
n°3427273
MaybeEijOr​Not
but someone at least
Posté le 20-10-2022 à 23:38:22  profilanswer
 

Le chart refresh ne sert à rien puisque tu veux une valeur bien précise pour l'axe indépendamment des données.

 

Évidemment que ça déconne avec activesheet si tu changes de feuille, c'est la définition de activesheet... Comme tu l'as fait avec Workbook_Open(), tu peux définir quelle feuille doit être impactée, attention si le graphique est sur une feuille dédiée c'est différent pour y accèder, il faut simplement utiliser son nom et non Worksheets (uniquement feuilles de calculs).
Le problème de Worksheet_Change c'est que c'est que la macro est forcément rattachée à la feuille dans laquelle elle se trouve.

 

Bref, vu la situation que je comprends (juste agrandir l'axe avec la valeur d'une case contenant aujourdhui()), la réponse la plus appropriée est d'utiliser l'évènement Workbook_Open en définissant la valeur max de l'axe en utilisant les noms des feuilles.

 

Charts("Graphique 1" ).Axes(xlValues).MaximumScale = Sheets("Nom de la feuille avec la date" ).Range("H2" )

Message cité 1 fois
Message édité par MaybeEijOrNot le 20-10-2022 à 23:53:42

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3427274
arnuche
Posté le 21-10-2022 à 00:48:06  profilanswer
 

MaybeEijOrNot a écrit :

Charts("Graphique 1" ).Axes(xlValues).MaximumScale = Sheets("Nom de la feuille avec la date" ).Range("H2" )


Il bugue avec ce code, pareil si je remets celui que tu avais posté plus haut (mais en ayant remplacé ActiveSheet par Sheets("Graphique" )).

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  94  95  96  ..  111  112  113  114  115  116

Aller à :
Ajouter une réponse
 

Sujets relatifs
[EXCEL] Faire une mise à jour dynamique de valeur entre champsExcel : rechercher et afficher une liste
[EXCEL] Conversion/multiplication de massequestions sur la téléphonie avec free en 512k
Excel: Comment insérer automatiquement un titre à chaque page ?[excel] largeur de colonne différente
[Excel] (N00B Inside :-/ )Je veux additionner ...2 questions urgentes : Remplacer Photoshop et achat de scanner
changer la police par défaut sous Excel[Excel] Comment faire pivoter une feuille ?
Plus de sujets relatifs à : [Topic Unique] Excel : Keep calm and Pivot Table !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)