macro qui me renvoie le nom et le chemin d'un fichier - VB/VBA/VBS - Programmation
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, …
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
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 |
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
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 …
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