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 :

Appeler un nom dynamique d'un classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien méthode
    Inscrit en
    Janvier 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien méthode

    Informations forums :
    Inscription : Janvier 2018
    Messages : 9
    Par défaut Appeler un nom dynamique d'un classeur
    Bonjour,

    Quelqu'un aurait une solution pour appeler une valeur d'une textbox d'un userform d'un classeur non actif qui a un nom évolutif ?
    Je m'explique....

    Mon classeur principale "Suivi Astérix" (.xltm ==> modèle) a une sauvegarde automatique à la fin sous un nom défini par une textbox "Référence" (==> Si il y a 10 références différentes, j'aurais 10 classeurs avec des noms différents).
    "Suivi Astérix" fait appel à un classeur "suivi temps" qui lui reste global, quelque soit la référence. Ce "suivi temps" a son propre jeu de macro.

    J'ai des éléments (Référence, SN, OF) renseignés dans le "Suivi Astérix" qui sont commun au "suivi temps". On se rapproche de ma question....
    En temps normal, j'utilise ce code mais avec un nom dynamique, je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Workbooks "(Suivi Astérix).activate"
    Userform1.Textbox1.Value
    J'ai essayé de passer par des cellules :
    - Renseigner dans des cellules sur "Suivi Astérix" les valeurs qui m'intéresse via un range("") afin de les récupérer après dans le "Suivi temps" avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Sheets("PARAMETRES").Activate.Range("F2")).Activate
    Le système prenant en compte seulement le range("F2") sur le "suivi temps"

    - J'ai essayé les variables public, elle fonctionnent tant qu'elles restent cantonnées à un classeur .

    Merci par avance,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    bah... j'ai rien compris !!!

    déjà activate et autre select c'est à proscrire. Travail directement avec les methodes et propriétés des objets. Mais cela ne répond pas à ta question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Sheets("PARAMETRES").Range("F2").Value).Activate 'ici .value est une des nombreuses propriétés de l'objet range
    comme je ne sais pas se qui se passe après cette ligne j'ai laissé le dernier activate même si je n'approuve pas !!!

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    question simple pour commencer :

    pourquoi activate ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre averti
    Homme Profil pro
    Technicien méthode
    Inscrit en
    Janvier 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien méthode

    Informations forums :
    Inscription : Janvier 2018
    Messages : 9
    Par défaut
    Bonjour

    bah... j'ai rien compris !!!
    Mouarf, je vais essayer plus simplement.

    Mon classeur A est un .xltm, à chaque ouverture une copie A1 s'ouvre. Cette copie A1 est automatiquement enregistré sous un nom rentré par le créateur du fichier A1 (qui peux être n'importe qui). Il peux devenir B, C, D, AE, etc.....(d'ou ma notion de "nom dynamique"). Je vous met les images qui expliqueront peux-être mieux.
    Fichier A = Suivi de projet AsterixV3
    Nom : Ficheir A.jpg
Affichages : 391
Taille : 72,7 Ko
    Fichier A1 = Suivi de projet AsterixV31
    Nom : Fichier A1.jpg
Affichages : 473
Taille : 414,2 Ko
    Fichier AZ = FJSA1 ==> Ce nom est rentré dans une textbox, par l'utilisateur ==> Devient le classeur de base.
    Nom : Fichier AZ.jpg
Affichages : 426
Taille : 281,0 Ko

    Jusque là, tout va bien (ou presque)

    Je souhaite y intégrer un autre classeur excel, qui permet d'établir une base de données de temps et qui sera commun a tous les classeurs B, C, AE, AZ, BE (ou FJSA1, FJSA2, FJST3, etc. pour reprendre mes images).

    Dans ce classeur de temps, j'ai le choix de rentrer des données (pour assurer une traçabilité des pièces) ou alors de reprendre mes données du classeur nouvellement enregistré / classeur de base.

    Et c'est là que je coince. J'ouvre mon classeur de temps mais je n'arrive pas à copier mes données de suivi à partir du classeur de base sur le classeur des temps vu que je ne sais pas quel nom aura mon classeur de base.

    Je n'ai pas essayé la solution ta solution Phil Free. J'y regarde.
    J'espère que c'est plus clair....

    Concernant les .activate et . select.


    question simple pour commencer :

    pourquoi activate ?
    déjà activate et autre select c'est à proscrire. Travail directement avec les methodes et propriétés des objets. Mais cela ne répond pas à ta question
    J'ai appris avec cette méthode donc je la reproduis vu qu'elle fonctionne
    Autant certaine appellation (Goto) je comprend qu'elle soit déconseillée. Mais le .activate ou .select je ne saisie pas pourquoi.
    Dans le tuto de Maxence HUBICHE, le .select n'est pas déconseillé.
    En recherchant avec différents mots-clés c'est souvent cette solution qui ressort.

    Si vous avez un exemple pour le remplacer, je pourrais y regarder. Si cela peux éviter des bugs a l'avenir !

Discussions similaires

  1. checked d'un checkbox avec nom dynamique
    Par Sylvain245 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/11/2005, 11h28
  2. Réponses: 4
    Dernier message: 09/03/2005, 11h13
  3. variable à nom dynamique en javascript
    Par noa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/01/2005, 01h12
  4. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  5. [syntaxe]Creation table avec nom dynamique
    Par ZuZu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/09/2004, 18h01

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