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 :

Récupérer le nom du fichier dans une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut Récupérer le nom du fichier dans une variable
    Bonjour,

    J'aimerais récupérer le nom du fichier ouvert dans une variable.
    Thisworkbook.name fonctionne, mais plus quand je l'introduis dans une variable.
    Peut-etre que je déclare mal mes variable...
    Voici mon code :

    |
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim grilledorigine As Variant
    | Dim nomfichier, nomfichier3 [ne fonctionne ni avec Variant, ni avec String, ni sans rien...]
    | nomfichier = ThisWorkbook.Name
    | nomfichier3 = Left(nomfichier, 3)
    Je me suis rendu compte que ca ne fonctionnait pas grace à la 'immediate window' qui donne le résultat suivant :
    |
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?nomfichier
    |
    |?thisworkbook.Name
    |Grille.xls
    Un grand merci d'avance à qui pourra m'aider !

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    Bonjour Patrick07,

    Heu... je viens de tester le même code que toi et ça fonctionne chez moi...

    Quel erreur que ça t'affiche, en fait?

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomfichier3 = Left(nomfichier, 3)
    renvoie les 3 premiers caractères du fichier ... c'est voulu?

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par Patrick07 Voir le message
    Oui, c'est pour un test conditionnel sur les 3 premières lettres du nom du fichier seulement (Prof A-M, Prof N-Z, Etudiants A-M, Etudiants N-Z). Merci.
    ok je pensais que peut-être tu voulais retirer les 3 caractères de l'extension

    sinon attention lors de l'exécution dans la 'Immediate Window' , ThisWorkBook correspond au projet sélectionné dans l'explorateur de projet
    dans le code, c'est bien le projet dans lequel s'exécute le code

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut
    Citation Envoyé par Arkham46 Voir le message
    sinon attention lors de l'exécution dans la 'Immediate Window' , ThisWorkBook correspond au projet sélectionné dans l'explorateur de projet
    dans le code, c'est bien le projet dans lequel s'exécute le code
    Le problème vient de là en vérité ! Il ne s'agit donc pas d'un problème d'attribution de valeur à une variable comme je le pensais.

    J'ai donc un fichier grille.xls à partir du quel je crée 3 copies profs.xls, etudiants.xls et locaux.xls.
    Pas de problème lorsque je lance ma macro si un seul fichier est ouvert.
    Mais là je viens d'ouvrir les 4 fichiers en meme temps.
    Le premier ouvert est grille.xls.
    Le dernier ouvert est locaux.xls et c'est sur celui-là que je teste ma macro.
    Ma macro affichant une msgbox "nomfichier", c'est 'grille' qui est affiché.
    Bref, Thisworkbook ne fonctionne pas comme je pensais qu'elle le ferait.
    J'aimerais donc que la suite de ma macro réagisse selon le nom du fichier, et pour cela j'avais une condition sur ce nom en utilisant nomfichier=thisworkbook.name

    Merci à qui pourra m'aider !

    Vous voulez le code complet ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    Ok, je comprends maintenant.

    Utilise dans ce cas "ActiveWorkbook.Name".

    Si "Locaux.xls" est le fichier que tu veux tester et le dernier fichier ouvert, normalement, activeworkbook devrait le cibler.
    Si "Locaux.xls" n'est pas le dernier fichier ouvert, fais en sorte de tester chaque fichier avec "ActiveWorkbook.Name" avant d'en ouvrir un autre.

    Thisworkbook.Name relève le nom du fichier où tu exécutes la macro.
    ActiveWorkbook.Name par contre rélève le nom du dernier fichier ouvert.

    J'espère que ça résolvera ton problème...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut
    Citation Envoyé par DJ_972 Voir le message
    Bonjour Patrick07,

    Heu... je viens de tester le même code que toi et ça fonctionne chez moi...

    Quel erreur que ça t'affiche, en fait?
    Ha ben oui tiens !
    L'erreur qui se produisait est que
    - dans la 'Immediate Window' la variable nomfichier semblait vide
    - dans le fichier, la suite du code (conditionné par la valeur de la variable) opérait comme si la variable nomfichier ne correspondait pas à mes attentes (ce qui était le cas si cette variable était effectivement vide).
    J'ai pourtant perdu 3 heures là-dessus.

    Je constate qu'il y a encore quelques soucis si j'ai 2 classeurs ouverts, ou ma fenetre de VBA ouverte, mais je devrais pouvoir m'en sortir.
    Si je continue à avoir des soucis, je me permettrai de revenir ici.

    Merci pour la remise sur les rails.
    Merci pour l'édition de mon message initial.

    Citation Envoyé par Arkham46 Voir le message
    bjr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomfichier3 = Left(nomfichier, 3)
    renvoie les 3 premiers caractères du fichier ... c'est voulu?
    Oui, c'est pour un test conditionnel sur les 3 premières lettres du nom du fichier seulement (Prof A-M, Prof N-Z, Etudiants A-M, Etudiants N-Z). Merci.

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

Discussions similaires

  1. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  2. [load] Nom de fichier dans une variable
    Par captaine93 dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/09/2009, 12h55
  3. [Système]Récupérer un nom de fichier dans une table
    Par denis76000 dans le forum Access
    Réponses: 7
    Dernier message: 04/04/2007, 11h24
  4. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  5. Shell: récupérer le bon nom de fichier dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h45

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