IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Plage de données d'un graphique - Comment insérer une formule pour indiquer le nom du fichier [XL-2010]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut Plage de données d'un graphique - Comment insérer une formule pour indiquer le nom du fichier
    Bonjour,

    Je construis un indicateur à l'aide d'une macro installée dans ClasseurMacro (Fichier Macro - RTF-CpySheet.xlsm).
    Ce classeur comprend 4 feuilles : "Bouton macro", "BaseDeDonnées", "TableGraphes", "Graphes".
    La dernière étape de la macro a pour objectif d'exporter les résultats dans un nouveau fichier (copier/coller des onglets "TableGraphes" et "Graphes").
    Le nouveau fichier est nommé "Indicateur"+ date et heure du jour.

    Le constat : Le graphe du nouveau fichier pointe sur la plage de donnée du fichier d'origine (ClasseurMacro).
    Le besoin : J'aimerais qu'il pointe sur la plage de donnée exportée dans le nouveau fichier, pour rendre les 2 classeurs indépendants.

    La tentative de solution :
    Mon idée est de modifier le libellé de la plage de données du graphique, en remplaçant le nom du fichier d'origine (en rouge ci-dessous), par une formule dont le résultat est le nom du fichier.
    Plage de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='[Fichier Macro - RTF-CpySheet.xlsm]TableGraphes'!$A$1:$A$13;'[Fichier Macro - RTF-CpySheet.xlsm]TableGraphes'!$C$1:$E$13
    Par exemple :
    formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(K5;TROUVE("[";CELLULE("nomfichier";A1))+1;NBCAR(CELLULE("nomfichier";A1))-TROUVE("[";CELLULE("nomfichier";A1))-8)
    Cette formule transforme :
    C:\Users\bonvarmn\OneDrive - bioMérieux SA\2019 - Support QP\RFT - Maquette 4 - Import QP et OOS et Invalides - En cours\[Indicateur_RFT_15-mars-2019_08-39-13.xlsx]Graphes
    en :
    Indicateur_15-mars-2019_08-39-13.xlsx (c'est le nom d'un "nouveau fichier")

    Mon idée ne fonctionne pas pour l'instant - Message : "références externes non valides"

    Question:
    Mon idée est-elle possible à réaliser
    Si oui, comment intègre-t-on cette formule (ou une autre)?


    Merci d'avance pour votre aide,
    Cordialement,
    Marino

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La seule solution est d'utiliser la fonction INDIRECT().
    Mais ça ne fonctionnera que si le fichier source est ouvert, INDIRECT() ne permettant pas de créer des liaisons vers des références externes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    la formule Cellule je l'utilise sur beaucoup de classeur à mon travail

    donc oui l'idée est bonne

    ton message apparait à quel moment exactement ?

    à bientôt
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 544
    Points : 935
    Points
    935
    Par défaut
    Bonjour,

    Méthode cheap ;

    Pour la dernière étape,
    Enregistrer le classeur d'origine
    faire un déplacement d'onglet sans copie vers un nouveau classeur puis faire un SaveAs avec l'emplacement et le nom désiré.
    Le fermer.
    Enfin fermer le classeur d'origine sans enregistrer.

    A moduler selon le besoin.

    Au plaisir,
    SM

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Menhir, Igloobel, Supermichou

    Merci beaucoup pour votre intérêt porté à ma question.
    Supermichou,
    Je viens de voir ta suggestion qui porte sur la macro et vais la tester sans tarder.

    Voilà ce que je viens de tester la suggestion de Menhir (sans succès pour l'instant):

    Le fichier d'origine est ouvert

    Dans le nouveau fichier:
    - la formule qui renvoie le nom du fichier est posée en cellule I1 de la feuille "Graphes"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(CELLULE("nomfichier";A1);TROUVE("[";CELLULE("nomfichier";A1))+1;NBCAR(CELLULE("nomfichier";A1))-TROUVE("[";CELLULE("nomfichier";A1))-8)
    - au niveau de la Plage de donnée du graphique, j'ai essayé 4 syntaxes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ='[Indirect(I1)]TableGraphes'!$A$1:$A$13;'[Indirect(I1)]TableGraphes'!$C$1:$E$13
    ='[=Indirect(I1)]TableGraphes'!$A$1:$A$13;'[=Indirect(I1)]TableGraphes'!$C$1:$E$13
    ='[=(Indirect(I1))]TableGraphes'!$A$1:$A$13;'[=(Indirect(I1))]TableGraphes'!$C$1:$E$13
    ='[(=Indirect(I1))]TableGraphes'!$A$1:$A$13;'[(=Indirect(I1))]TableGraphes'!$C$1:$E$13
    Toutes ces syntaxes renvoient le message "Références non valides"

    Menhir,
    Pourrais-tu m'indiquer comment utiliser la fonction Indirect() dans la syntaxe de la plage de donnée ?

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    J'aimerais qu'il pointe sur la plage de donnée exportée dans le nouveau fichier, pour rendre les 2 classeurs indépendants.
    Au plus simple, faire un SaveCopyAs et supprimer les onglets inutiles
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    La solution de Supermichou a résolu mon problème : déplacer plutôt que copier les feuilles du tableau et des graphes à exporter

    Dans la dernière étape de la macro (ex. pour la feuille graphe - même modif pour les autres onglets à exporter):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphes.Copy Before:=Indicateur.Sheets(1)
    est remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphes.Move Before:=Indicateur.Sheets(1)
    et la plage de donnée du graphe exporté pointe sur la tableau exporté (et non plus sur celui du classeur d'origine)

    Affaire classée !
    Merci beaucoup à tous trois,
    Cordialement,
    Marino

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Hello

    La solution de Patrice740 marche très bien aussi !

    Encore merci à tous,
    Marino

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    - la formule qui renvoie le nom du fichier est posée en cellule I1 de la feuille "Graphes"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(CELLULE("nomfichier";A1);TROUVE("[";CELLULE("nomfichier";A1))+1;NBCAR(CELLULE("nomfichier";A1))-TROUVE("[";CELLULE("nomfichier";A1))-8)
    Pourrais-tu m'indiquer comment utiliser la fonction Indirect() dans la syntaxe de la plage de donnée ?
    Il faut monter le paramètre de INDIRECT comme une chaine de caractères.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INDIRECT("["&I1&"]TableGraphes'!$A$1:$A$13")
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/04/2019, 17h34
  2. Réponses: 23
    Dernier message: 03/07/2012, 15h44
  3. Réponses: 0
    Dernier message: 20/05/2009, 10h03
  4. [VBA-E]Agrandir une plage de données d'un graphique
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/05/2007, 11h43
  5. [C#] pilotage excel: définir plage de données d'un graphique
    Par cortex024 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2006, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo