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 :

Sélectionner un classeur en fonction de son nom variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Conducteur de travaux
    Inscrit en
    Mars 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conducteur de travaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2017
    Messages : 1
    Par défaut Sélectionner un classeur en fonction de son nom variable
    Bonjour,

    Débutant en VBA, j'aurai besoin de votre aide pour ce qui suit.

    J'ai créer un code pour créer un classeur excel automatiquement en cliquant sur une ligne d'un autre classeur.
    Sur ce nouveau classeur créé, il est également "enregistrer sous" automatiquement en fonction du nom qu'il y avait sur la ligne sélectionnée dans le premier classeur.

    En résumé, chaque nouveau classeur a des noms différents.

    Ce que je voudrais faire dans un autre classeur, c'est sélectionner le classeur en fonction de son nom.
    Je m'explique :
    - Sur une cellule j'indique un nom, par exemple : CHANTIER N1
    - Le classeur va donc s’appeler : CHANTIER N1.xlsm
    - Dans une macro, j'aimerai ouvrir ce classeur CHANTIER N1.xlsm mais si je change de nom (exemple : CHANTIER N2) j'aimerai qu'il me l'ouvre aussi.

    Je pense qu'il faut déclarer des variables ou quelque chose.
    J'ai essayé en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim nomfeuille
               nomfeuille = ActiveWorkbook.Name
      
    Windows("nomfeuille").Activate
        Sheets("CALCULS").Select
        Range("f8").Copy
        Windows("BASE_DE_DONNEES_ind.1.xlsm").Activate
        Sheets("FOURNISSEUR").Select
        Cells(numcellule, 10).PasteSpecial Paste:=xlValues
    Ca bloque au niveau de "Windows("nomfeuille").Activate".
    Ca marque une erreur '9'.

    Je vous remercie d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Lorsque l'on attribue une valeur de type string à une variable, on ne se réfère pas à sa valeur en mettant entre guillemets le nom de cette variable (c'est là le vraiment B.A.BA ...)
    Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nomfeuille = ActiveWorkbook.Name
    Windows("nomfeuille")
    n'a absolument aucun sens et chercherait une fenêtre dont le nom serait ... nomfeuille et non celui de la propriété Name du classeur.
    Bon ... je vais faire ma sieste ...

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Si tu écris
    Excel cherche un classeur dont le nom est nomFeuille

    Si le nom de la feuille est en A1 par exemple, tu dois utiliser la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nomfeuille = Range("A1").Value
    Windows(nomfeuille)
    Sans guillemets. ou même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows(Range("A1").Value)
    Sans passer par aucune variable.

    Par contre, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows("nomfeuille").Activate
    va sûrement pas ouvrir ton classeur. Cela active le classeur SI il est déjà ouvert. Essaie plutôt quelque chose comme (à modifier selon le chemin d'accès au fichier):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:="H:\Documents\nom du dossier\nom du fichier.xlsx"
    Avec une variable ce serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:="H:\Documents\nom du dossier\" & nomFeuille & ".xlsx"

Discussions similaires

  1. [POO] Appeler une fonction par son nom dans une variable
    Par whitespirit dans le forum Langage
    Réponses: 16
    Dernier message: 18/06/2008, 11h23
  2. récupérer indice champ en fonction de son nom
    Par chris76 dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2007, 08h31
  3. [VB6] Connaitre la lettre d'un lecteur en fonction de son nom
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/11/2006, 21h57
  4. cocher une checkbox en fonction de son nom
    Par boss_gama dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/09/2006, 16h42
  5. appeler une fonction connaissant son nom (en string)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 20/07/2004, 00h46

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