Choix du chemin

JANO

XLDnaute Occasionnel
Bonjour tout le monde,

J'utilise la macro ci dessous, mais voila, Je souhaiterai que le chemin ne soit pas inscrit en dur, mais plutôt utiliser la fonction ouvrir d’Excel pour faire manuellement le choix du dossier ou ce trouve tous les fichiers TXT

Pouvez vous m'aider ? merci


Sub ImportfichiersText(NomFichier As Variant, Cible As Range)
Dim QT As QueryTable

Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
NomFichier, Destination:=Cible)

With QT
.Refresh
End With
End Sub
Sub Import_fichiers_TXT_certificats()

Dim Fichier As String, Chemin As String
Dim i As Long

'Répertoire contenant les fichiers
Chemin = "C:\Users\lfd\Desktop\Quotidien\MACRO SAF\TXT"
Fichier = Dir(Chemin & "\*.txt")
'Boucle sur les fichiers
Do While Fichier <> ""

i = Range("A65536").End(xlUp).Row + 1
ImportfichiersText Chemin & "\" & Fichier, Cells(i, 1)

Fichier = Dir
Loop
End Sub
 

Pièces jointes

  • Fichier TXT.zip
    16.9 KB · Affichages: 25
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Choix de chemin

Bonjour

à mettre dans un module standard

Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDListA Lib "Shell32.dll" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolderA Lib "Shell32.dll" _
(lpBrowseInfo As BROWSEINFO) As Long
Sub Test()
Dim bInfo As BROWSEINFO, szPath As String * 512
bInfo.lpszTitle = "Sélectionnez un dossier."
bInfo.ulFlags = &H1
If SHGetPathFromIDListA(SHBrowseForFolderA(bInfo), szPath) Then
MsgBox "Dossier sélectionné : " & _
Left(szPath, InStr(szPath, vbNullChar) - 1), vbInformation
Else: MsgBox "Aucun dossier sélectionné."
End If



End Sub
 

Isab

XLDnaute Occasionnel
Re : Choix du chemin

Bonjour

peut être comme ça avant le Do while:


Code:
Chemin = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm;*.xlsb;*.txt),*.xls;*.xlsx;*.xlsm;*.xlsb;*.txt", _
Title:="Choisir le Fichier à traiter", MultiSelect:=False)
Fichier = Split(Chemin, "\")(UBound(Split(Chemin, "\")))

Bonne suite

Edit : Bonjour Gilbert ( pas vu ...sourire)
 
Dernière édition:

JANO

XLDnaute Occasionnel
Re : Choix du chemin

Merci Isab,
cela focntionne mais je ne peux choisir qu'un seul fichier TXT. j'aurai besoin de les remonter tous.

Merci gilbert_RGI,

J"ai toute la parti ci dessous en rouge lorsque je le met dans un module.

Declare Function SHGetPathFromIDListA Lib "Shell32.dll" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolderA Lib "Shell32.dll" _
(lpBrowseInfo As BROWSEINFO) As Long

je joint les fichiers avec vos code à l'interrieur.

Merci beaucoup pour votre aide
 

Pièces jointes

  • Test TXT.zip
    15.2 KB · Affichages: 33

JANO

XLDnaute Occasionnel
Re : Choix du chemin

Merci Beaucoup Isa,
je peux tout selectionner, mais ca plante le reste de la macro. (j'ai vais continuer avec la marcro de gilbert_RGI )

Merci gilbert_RGI

cijoint le message d'erreur, mais je ne métrise pas.

Merci à tous de votre aide
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    29.4 KB · Affichages: 49
  • Capture.JPG
    Capture.JPG
    29.4 KB · Affichages: 51
  • Capture.JPG
    Capture.JPG
    29.4 KB · Affichages: 50

Roland_M

XLDnaute Barbatruc
Re : Choix du chemin

bonjour,

deux petites fonctions si ça peut servir !?

Code:
'**** select la petite boite ouvrir dossier ****
'(&H0&, "Sélectionnez un dossier", &H201&, "C:\") (&H1&=avec "créer un nouveau dossier") (&H201& sans)
'Set ObjFolder = CreateObject("Shell.Application").BrowseForFolder(&H0&, Message$, &H201&, RepParDefaut$)

Public Function FLoadNomDuREP() As String
Dim ObjFolder As Object, REP As String
Set ObjFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Sélectionnez un dossier", &H201&)
If Not ObjFolder Is Nothing Then
   REP = ObjFolder.Items.Item.Path
   If Right(REP, 1) <> "\" Then REP = REP & "\"
End If
FLoadNomDuREP = REP
Set ObjFolder = Nothing
End Function



'**** select la grande boite ouvrir dossier ****

Public Function FLoadNomDuRep2() As String
With Application.FileDialog(msoFileDialogFolderPicker)
  .ButtonName = "OK"
  .InitialFileName = ThisWorkbook.Path & " \ "
  .Title = "Sélectionnez un dossier"
  .Show
  If .SelectedItems.Count > 0 Then FLoadNomDuRep2 = .SelectedItems(1) Else FLoadNomDuRep2 = ""
 'ou direct
 'If .Show = -1 Then FLoadNomDuRep2 = .SelectedItems(1) Else FLoadNomDuRep2 = ""
End With
End Function
 

Isab

XLDnaute Occasionnel
Re : Choix du chemin

Re

Corrige comme ceci :

Code:
Sub Import_fichiers_TXT_certificats()
Dim Fichier As String
Dim i As Long
'Répertoire contenant les fichiers
Chemin = Application.GetOpenFilename(, , , , True)
If IsArray(Chemin) Then
For t = LBound(Chemin, 1) To UBound(Chemin, 1)
Workbooks.Open Chemin(t)
Fichier = Split(Chemin(t), "\")(UBound(Split(Chemin(t), "\")))
MsgBox Fichier
'j'enlève le msgbox au dessus et je mets mon traiment peut-être
'
Next t
Else
' ce que tu veux ou rien...
End If
End Sub

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 325
Messages
2 087 304
Membres
103 513
dernier inscrit
adel.01.01.80.19