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 :

[Excel-VBA]Nom d'un workbook a partir de son path


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Par défaut [Excel-VBA]Nom d'un workbook a partir de son path
    Bonjour,

    Voila j'utilise la commande GetOpenFilename afin de recuper un nom de fichier via l'exporateur. En fait l'utilisateur choisit un fichier .xls via l'explorateur.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub CmdOpenExpl_Click()
     
    Dim Dir As String
     
    Dir = CurDir$
    ChDir "c:\"
    SourceFileFullPath = Application.GetOpenFilename
     
    If VarType(SourceFileFullPath) = vbBoolean Then Exit Sub ' cancellation
     
    ChDir Dir
     
    txtInputPath.Value = SourceFileFullPath
     
    End Sub
    Mais la fonction GetOpenFileName retourne le chemin complet du fichier .xls.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\Administrator\myfile.xls
    Moi je souhaite utiliser seulement le nom du fichier (myfile.xls) afin de manipuler ce classeur dans d'autre fonction VBA
    J'ai fais le tour des fonctions autour des chaines de carateres mais je n'arrive pas a resoudre mon probleme.

    Une idee?

  2. #2
    RLX
    RLX est déconnecté
    Membre éclairé Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Par défaut
    Salut Tartenpion,

    un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileName = Dir(SourceFileFullPath)

    pourra peut être t'aider.

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Si le but est de l'ouvrir, une fois ouvert:
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Par défaut
    Citation Envoyé par AlainTech
    Si le but est de l'ouvrir, une fois ouvert:
    Non je ne peux pas utiliser cela car je veux avoir son nom sans l'ouvrir

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Par défaut
    Citation Envoyé par RLX
    Salut Tartenpion,

    un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileName = Dir(SourceFileFullPath)

    pourra peut être t'aider.
    Ca me parait ideal mais ca ne marche pas, il bloque sur le "DIR" avec l'erreur suivante:

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tiens un truc marrant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim chr As String
    Dim nomfichier As String
    chr = "C:\Documents and Settings\Administrator\myfile.xls"
    nomfichier = Right(chr, Len(chr) - InStrRev(chr, "\"))
    MsgBox Left(nomfichier, InStr(nomfichier, ".") - 1)
    End Sub
    le msgbox te retourne alors le nom de ton fichier
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ca ne serait pas plus simple d'utiliser la fonction Split avec comme separateur "\" ?
    Alors le nom de fichier serait le dernier élément du tableau retourné par Split.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Serait bien que tu donnes la syntaxe avec split
    Attention, dans VBA97, "split : Cette propriété a la valeur True si la fenêtre est fractionnée"
    Après, tu expliqueras Ubound(LeSpit)

    mais je suis d'accord avec toi pour le split la solution d'Illight ne tient pas compte de plusieurs \
    En outre, il utilises chr comme variable or chr est un mot clé... Et donc... à éviter

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    En effet, je corrige tout de suite. Un petit lien vers un Tutorial :
    http://drq.developpez.com/vb/tutoriels/String/
    La partie 6 explique l'utilisation de Split.

  10. #10
    RLX
    RLX est déconnecté
    Membre éclairé Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Par défaut
    Citation Envoyé par Tartenpion
    Ca me parait ideal mais ca ne marche pas, il bloque sur le "DIR" avec l'erreur suivante:
    Salut Tartenpion,
    une première raison qui fonctionne pas c'est parce que tu déclare une variable Dir qui est une fonctionne utilisé par VBA. D'où le "Array expected" pour lui il croit que c'est un tableau de String et non pas la fonction Dir.

    Petite erreur aussi de ma part FileName est aussi utilisé par VBA vaut mieux changer de nom de variable.

  11. #11
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par ouskel'n'or
    la solution d'Illight ne tient pas compte de plusieurs \
    Sauf que tu as du louper l'utilisation de InstrRev


    La fonction que j'utilise tout le temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function ExtractFileName(ByVal sFullPath As String) As String
        If InStr(sFullPath, "\") = 0 And Len(sFullPath) > 0 Then
            ExtractFileName = sFullPath
            Exit Function
        End If
        If Right(sFullPath, 1) = "\" Then
            ExtractFileName = ""
            Exit Function
        End If
        ExtractFileName = Mid(sFullPath, InStrRev(sFullPath, "\") + 1)
    End Function

  12. #12
    RLX
    RLX est déconnecté
    Membre éclairé Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Par défaut
    A mon avis ça pourrait etre un petit peu mieux a voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub CmdOpenExpl_Click()   
    Dim SourceFileFullPath as String 'Comme tu n'as pas la fonction MultiSelect active sinon il faut faire un array... a voir
    Dim Dossier As String   
     
    Dossier = CurDir$ 
     
    ChDir "c:\" SourceFileFullPath = Application.GetOpenFilename   
     
    If VarType(SourceFileFullPath) = vbBoolean Then 
    Exit Sub ' cancellation   
     
    ChDir Dossier   
     
    txtInputPath.Value = Dir(SourceFileFullPath)   
     
    End Sub

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sauf que tu as du louper l'utilisation de InstrRev
    Moi j'ai "InstrRev : Mot clé introuvable" dans l'aide en ligne
    Chuis au boulot et j'ai pas ça dans VBA97
    Autant pour moi illight N'empêche que chr est quand même une fonction et que c'est quand même pas recommandé de l'utiliser comme variable

  14. #14
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Citation Envoyé par ouskel'n'or
    Moi j'ai "InstrRev : Mot clé introuvable" dans l'aide en ligne
    Chuis au boulot et j'ai pas ça dans VBA97
    Autant pour moi illight N'empêche que chr est quand même une fonction et que c'est quand même pas recommandé de l'utiliser comme variable
    toi meme

    N'empeche que ça marche, d'ailleurs c'est bizarre que chr ne m'ai pas claqué une erreur
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  15. #15
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par illight
    d'ailleurs c'est bizarre que chr ne m'ai pas claqué une erreur
    tu l'as déclaré comme variable string, et tu n'utilises pas la fonction Chr, donc comme VB est sympa, il dit rien
    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim chr As Integer
    MsgBox Chr(chr)
    la, ça va couiner

    Ousk a raison mieux vaut éviter les mots réservés comme nom de variable

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/08/2008, 14h55
  2. Dimension d'une image à partir de son path
    Par Gregory.M dans le forum C#
    Réponses: 4
    Dernier message: 06/08/2008, 09h48
  3. Réponses: 4
    Dernier message: 30/10/2007, 21h03
  4. Réponses: 1
    Dernier message: 06/12/2006, 15h24
  5. Obtenir le nom d'un proces a partir de son PID
    Par Visiteur_33 dans le forum Windows
    Réponses: 6
    Dernier message: 16/02/2006, 11h03

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