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 :

Nom fichier variable sans extension ni chemin [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut Nom fichier variable sans extension ni chemin
    Bonjour,

    Tout est dans le titre, je n'arrive pas à avoir le nom de mon fichier sans l'extension, et pourtant j'ai cherché...
    Ca doit être tout con en plus !

    Voici mon code, j'arrive juste à enlever le chemin.. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ParcourirFichierMaj_Click()
    FichierDeMaj = Application.GetOpenFilename("Tous,*.*", , "Choisir un fichier ...")
    MaJ.LocalisationMaj.Text = FichierDeMaj
    pos = InStr(FichierDeMaj, ".xlsx")
     FichierMajSansChemin = Mid(FichierDeMaj, InStrRev(FichierDeMaj, "\") + 1)
     Debug.Print FichierMajSansChemin
     FichierMaj = Left(FichierMajSansChemin, pos - 1)
     Debug.Print FichierMaj
    End Sub
    Merci d'avance pour votre aide...

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Je dirais tout de même que tu n'as pas du chercher beaucoup....
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub test()
        Dim FichierDeMaj As String
        Dim chemin As String
        Dim ext As String
        Dim fileExt
     
        FichierDeMaj = Application.GetOpenFilename("Tous,*.*", , "Choisir un fichier ...")
     
        'Si on veut le chemin
        chemin = Left(FichierDeMaj, InStrRev(FichierDeMaj, Application.PathSeparator) - 1)
     
        'On extrait le nom du chemin complet
        FichierDeMaj = Right(FichierDeMaj, Len(FichierDeMaj) - InStrRev(FichierDeMaj, Application.PathSeparator))
     
        'On split sur le . pour extraire le nom et l'extension
        fileExt = Split(FichierDeMaj, ".")
     
        'Si on veut l'extension
        ext = fileExt(1)
     
        'On extrait le nom sans l'extention
        FichierDeMaj = fileExt(0)
     
        Debug.Print chemin
        Debug.Print FichierDeMaj
        Debug.Print ext
    End Sub
    Utilisation de Application.PathSeparator pour total compatibilité (Mac par exemple).
    Fonctionne avec n'importe quel type de ficiher, extension à 3 ou 4 (autant qu'on veut en fait) caractères.

  3. #3
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fichierdemaj = Application.GetOpenFilename("Tous,*.*", , "Choisir un fichier ...")
    If fichierdemaj = False Then
      MsgBox "aucun fichier choisi": Exit Sub '======= prévoir
    End If
    MsgBox fichierdemaj
    pos = InStr(fichierdemaj, ".")
     FichierMajSansChemin = Mid(fichierdemaj, InStrRev(fichierdemaj, "\") + 1)
     MsgBox FichierMajSansChemin
     pos = InStr(FichierMajSansChemin, ".")
     FichierMaj = Left(FichierMajSansChemin, pos - 1)
     MsgBox FichierMaj

  4. #4
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Merci beaucoup pour ta réponse super rapide super claire avec des supers commentaires !
    Tout est parfait.

    Maintenant que j'ai le nom de mon fichier, je devrais pouvoir exécuter la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("FichierIviz").Worksheets.....
    Pourtant, j'ai une erreur à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Workbooks("FichierIviz").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value <> Workbooks("FichierMaJ").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value Then
    Saurais-tu pourquoi ?

    Désolé d'abuser....

    EDIT : Merci pour tes précisions umpa' ! J'avoue que c'est pas mal du tout de prévoir si aucun fichier n'est choisi
    Désolé j'étais entrain d'écrire quand tu m'a répondu ^^

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ParcourirFichierMaj_Click()
        Const EXT = ".xlsx"
           V = Application.GetOpenFilename("Classeurs Excel,*" & EXT, , "   Choisir un classeur  :")
        If V = False Then Exit Sub
        MaJ.LocalisationMaj.Text = V
        V = Split(V, Application.PathSeparator)
        Debug.Print V(UBound(V))
        FichierMaj$ = Replace$(V(UBound(V)), EXT, "")
        Debug.Print FichierMaj
    End Sub
    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  6. #6
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Merci aussi Marc pour ton code.

    Ma ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Workbooks("FichierIviz").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value = "QX07007040" Then
    me génère une erreur et si je la remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(FichierIviz).Activate
        If Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value = "QX07007040" Then
    Tout va bien... J'comprends pas pourquoi le "Workbooks(FichierIviz).Worksheets" passe pas....

    J'ai besoin de vos lumières T.T

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 129
    Par défaut
    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Workbooks("FichierIviz.xlsx").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value = "QX07007040" Then

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par backx3 Voir le message
    J'comprends pas pourquoi le "Workbooks(FichierIviz).Worksheets" passe pas...
    Si FichierIviz est une variable donc il ne doit pas y avoir de guillemets l'encadrant !

  9. #9
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Merci maths' mais ça ne fonctionne pas :/

    Le soucis c'est que j'aimerais ne pas l'activer pour faire une comparaison avec un autre fichier du coup je ne peux pas activer les deux fichiers en même temps...

    La ligne que j'aimerais avoir et celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Workbooks("FichierIviz").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value <> Workbooks("FichierMaJ").Worksheets("LUP – QC Délai et Liste Quotidi").Range("A" + CStr(i)).Value Then
    Du coup je peux pas faire ActiveWorkbooks vu que je ne peux pas activer les deux en même temps..

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Si FichierIviz est une variable, il ne doit pas y avoir de guillemets l'encadrant !

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 129
    Par défaut
    Il faut identifier d'où vient le problème comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim tmp
    Set tmp = Workbooks("FichierIviz")
    Set tmp = tmp.Worksheets("LUP – QC Délai et Liste Quotidi")
    Set tmp = tmp.Range("A" + CStr(i))
    Pareil pour la partie droite de la comparaison

  12. #12
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Merci beaucoup Marc ! J'ai pas été très futé sur ce coup là..... !

    Tout fonctionne niquel !

    Merci maths', je ferais ça pour mes prochaines erreurs

    Merci à tous

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

Discussions similaires

  1. [XL-97] Fichier renommé sans extension
    Par wahoo dans le forum Excel
    Réponses: 0
    Dernier message: 22/05/2013, 11h34
  2. Problème avec Select imbriqué nom fichier variable
    Par gb1963 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/08/2011, 14h47
  3. Réponses: 5
    Dernier message: 23/02/2011, 10h50
  4. nom de ficher sans extension
    Par charouel dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/08/2009, 15h31
  5. sql loader et fichier data sans extension
    Par fguigui dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 03/04/2007, 15h31

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