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

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    février 2016
    Messages
    49
    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 : 49
    Points : 28
    Points
    28

    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
    12 340
    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 : 12 340
    Points : 25 154
    Points
    25 154

    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 émérite
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA
    Inscrit en
    septembre 2005
    Messages
    1 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 409
    Points : 2 521
    Points
    2 521
    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 éclairé
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    juillet 2012
    Messages
    512
    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 : 512
    Points : 880
    Points
    880

    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
    49
    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 : 49
    Points : 28
    Points
    28

    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
    Membre chevronné Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    mars 2007
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : mars 2007
    Messages : 918
    Points : 1 806
    Points
    1 806

    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
    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
    49
    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 : 49
    Points : 28
    Points
    28

    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
    49
    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 : 49
    Points : 28
    Points
    28

    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
    12 340
    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 : 12 340
    Points : 25 154
    Points
    25 154

    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: 9
    Dernier message: 31/08/2017, 14h25
  2. Réponses: 23
    Dernier message: 03/07/2012, 16h44
  3. Réponses: 0
    Dernier message: 20/05/2009, 11h03
  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, 12h43
  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, 18h34

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