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

Macros et VBA Excel Discussion :

MàJ automatique des données d'un fichier depuis un autre sans l'ouvrir [macro vs. =INDIRECT()] [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut MàJ automatique des données d'un fichier depuis un autre sans l'ouvrir [macro vs. =INDIRECT()]
    Bonjour,

    Je travaille sur un fichier 'monitor.xls', qui réalise des calculs en se basant sur les données présente dans une seule page du fichier 'data yyyymmdd.xlsb'.
    data yyyymmdd.xlsb est un fichier assez lourd, peu flexible et dont le nom change tous les jours; j'essaye donc de récupérer les données sans l'ouvrir.

    Je cherche une méthode pour faire en sorte que le fichier monitor 'pointe' automatiquement vers le bon fichier 'data yyyymdd.xlsb' dont le nom change tous les jours.

    Je vois 2 méthodes :
    1 - macro, liens dans des cellules, refresh
    2 - indirect

    Méthode #1
    J'ai d'écris sur toute une page le lien des cellules vers les cellules du fichier data, ainsi j'ai sur un tableau avec dans chaque cellule une formule ressemblant à :
    =+'Z:\10.A \Projets\[data 20181015.xls]Feuil1'!$A2
    et ma macro, à l'ouverture du fichier :
    1) Scan pour obtenir le dernier nom du fichier le plus récent.
    2) Modifie, dans chaque cellule, le nom du fichier en le remplaçant par le nom du fichier scanné et sélectionné.
    3) Rafraîchi les données sur la page

    Ce procédé est assez lourd, et le changement de nom du fichier dans chaque formule + Mise à jour de la valeur est assez long.

    Méthode #2
    J'aimerai savoir s'il est possible d'utiliser la fonction indirect pour pointer vers les cellules d'un fichier fermé.
    Ainsi je n'aurai que à utiliser ma macro pour obtenir le nom du dernier fichier dans une cellule qui servira à la reconstruction du chemin pour les fonctions indirect.

    J'espère avoir été assez clair.

    Merci!

  2. #2
    Expert éminent 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
    Par défaut
    Petite précision liminaire : lire ou écrire des données dans un fichier fermé, c'est un oxymore.
    Pour lire ou écrire des données dans/depuis un fichier, il faut qu'il ait été ouvert d'une façon ou d'une autre, même si ce n'est pas classiquement avec une commande Fichier > Ouvrir et qu'il reste invisible.

    Donc, quelle que soit la méthode, lire des données dans un fichier lourd sera forcément lourd (plus ou moins).

    L'avantage d'accéder à un fichier façon base de données est que la source n'est pas chargée en mémoire (du moins, pas dans son intégralité).
    Reste à savoir si ce "non chargement" apporte plus de gain que la perte de performance engendrée par l'appel à un fichier extérieur. C'est au cas par cas qu'on peut répondre à cette question.

    Citation Envoyé par MonSavon Voir le message
    Méthode #2
    J'aimerai savoir s'il est possible d'utiliser la fonction indirect pour pointer vers les cellules d'un fichier fermé.
    Le choix sera facile : méthode 1.
    Pourquoi ? Parce que INDIRECT ne fonctionne pas sur un fichier fermé. Donc : méthode 2 impossible.

  3. #3
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Merci Menhir pour ces explications.

    Je suis resté sur ma méthode #1, qui fonctionne bien mais est en VBA (ce qui repousse certaines personnes...).


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

Discussions similaires

  1. Transfert automatique des données de deux fichiers excel
    Par mia.555 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/09/2016, 16h42
  2. Copier des données d'un fichier vers un autre sans écraser le second
    Par jalons dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 09/04/2013, 21h07
  3. Sauvegarder des données dans un fichier depuis une Base de Données
    Par ankou2005 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 19h51
  4. récupérer des données d'un fichier simulink à un autre
    Par Nathaniel_etudiant dans le forum Simulink
    Réponses: 1
    Dernier message: 13/09/2010, 12h56
  5. Réponses: 0
    Dernier message: 07/06/2010, 17h01

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