macro qui me renvoie le nom et le chemin d'un fichier

macro qui me renvoie le nom et le chemin d'un fichier - VB/VBA/VBS - Programmation

Marsh Posté le 19-09-2017 à 18:15:16    

Bonjour,
 
Je recherche a faire une macro qui me renvoie le nom et le chemin d'un fichier.
1. Une fenetre apparait me demandant de selectionner un fichier
2. renvoie du nom du fichier
3. renvoie du chemin
 
Si possible stocké dans 2 variables différentes
 
Merci d'avance
 

Reply

Marsh Posté le 19-09-2017 à 18:15:16   

Reply

Marsh Posté le 19-09-2017 à 18:54:06    

 
            Bonjour !
 
            Pour la sélection d'un fichier voir dans l'aide VBA interne la propriété FileDialog
            ou en plus simple pour les débutants la méthode GetOpenFilename
 
            Pour extraire nom et chemin, avec une paire de neurones et les fonctions textes internes au VBA
            c'est à la portée d'un débutant !   Utiliser la fonction InStrRev pour trouver la position du dernier antislash
            et à partir de là c'est un jeu d'enfant pour séparer le texte !  Voir les fonctions texte Right, Left, Len, Mid, …
 

Reply

Marsh Posté le 20-09-2017 à 12:26:12    

Bonjour,
 
Merci du retour. Je n'arrive pas à me positionner.
Voila mon code :
 
Sub NameFichier()
   
    Dim Fichier As Variant
    Dim nom As Variant
    Dim longueur As Integer
     
     
 
    'Affiche la boîte de dialogue "Ouvrir"
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*" )
 
    'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
    'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
    If Fichier = False Then Exit Sub
 
 
   
End Sub
 
 
De la je n'arrive pas malgré vos conseils a me positionner  et stocker le nom du fichier dans une variable
 
merci

Reply

Marsh Posté le 20-09-2017 à 14:20:39    

Salut, voir http://silkyroad.developpez.com/VB [...] aracteres/ ou http://warin.developpez.com/access/fichiers/ pour la suite
 

Option Explicit
 
Sub SelectionFichier()
Dim sFichier As String
Dim sChemin As String
 
    sChemin = ThisWorkbook.Path & "\"
 
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = sChemin
        .Title = "Sélectionner le fichier"
        .AllowMultiSelect = False
        .ButtonName = "Sélection Fichier"
        With .Filters
            .Clear
            .Add "All", "*.*"
        End With
        .Show
        If .SelectedItems.Count > 0 Then
            sFichier = .SelectedItems(1)
            MsgBox sFichier
        End If
    End With
End Sub


Message édité par kiki29 le 20-09-2017 à 14:52:21

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
Reply

Marsh Posté le 20-09-2017 à 15:09:59    

Merci du retour. J'ai reuissi à le coder de manière différente.
 
Cependant, j'arrive à une annomalie que je ne comprend pas.  
A la ligne    Workbooks.Open Filename:=CheminSource & NomSource, il bloque
 
code:
 
Sub Transfert2()
' Transfert Macro               OBjet
' Copie de [DATA3] de source.xlsx vers [ORG] puis [TRAV]
     
    Dim NomSource   As String
    Dim NomTravail As String
    Dim OngletSource As String
    Dim OngletDesti As String
    Dim CheminSource As String
    Dim Fichier As Variant
    Dim nom As String
    Dim longueur As Integer
    Dim Taille_chaine As Integer
    Dim Position As Integer
     
     
     'Affiche la boîte de dialogue "Ouvrir"
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*" )
 
    'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
    'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
    If Fichier = False Then Exit Sub
 
    longueur = Len(Fichier)
     
         Position = longueur - InStrRev(Fichier, "\", -1, 1)
         
   
 
     
     
    NomSource = Right(Fichier, Position)
    CheminSource = Fichier
    NomTravail = "4-6 sept.xlsm"
    OngletSource = "Data3"
    OngletDesti = "Org"
     
     
     
    'Ouverture classeur source.xlsx
    'ChDir "C:\Users\Formateur\Desktop"
        Workbooks.Open Filename:=CheminSource & NomSource
     
    'Copy des colonnes Onglet "Data3" de source
        Workbooks(NomSource).Sheets(OngletSource).Columns("A:C" ).Copy
     
    'On colle dans source.xls [ORG]
        Workbooks(NomTravail).Sheets(OngletDesti).Columns("A:A" ).PasteSpecial
   
   'Fermeture de Source
        Application.CutCopyMode = False     'Echap  (pour désactiver la copie)
        Workbooks(NomSource).Close                  'On ferme
         
    'On copie de ORG => Trav
        OngletSource = "Org"
        OngletDesti = "Trav"
     
        Workbooks(NomTravail).Sheets(OngletSource).Range("A1" ).CurrentRegion.Copy      'CTRL *
         
        'On colle dans Trav
        Workbooks(NomTravail).Sheets(OngletDesti).Range("A1" ).PasteSpecial
         
    'Deselction copie
        Application.CutCopyMode = False
End Sub

Reply

Marsh Posté le 21-09-2017 à 10:06:48    

 
            Conformément aux règles de ce forum, merci de baliser le code via l'icône dédiée !
 

Bonjour7667 a écrit :

Workbooks.Open Filename:=CheminSource & NomSource, il bloque


            Si « il bloque » alors la Logique n'est pas respectée, juste vérifier le contenu des variables
            et comparer par exemple avec ce que renvoie  GetOpenFileName  …


Message édité par Marc L le 21-09-2017 à 10:07:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed