XL 2013 BOITE DE DIALOGUE POUR CHEMIN D'ACCES

ebenezerkonan

XLDnaute Nouveau
Bonjour chers tous, heureux de vous retrouver;)

J'ai sous la main une macro, qui me permets de nommer un répertoire pour lecture:

' Définir le répertoire à lire
pth = "C:\Users\S_ebekonan\Desktop\Dossier EBEN\ETATS 2021\ETATS MOOV MONEY\3-MARS 2021\bouclage du 01"
' Créer le fichier résultat
Set res = Workbooks.Add(xlWBATWorksheet)
Set dst = res.Worksheets(1).Range("A1")
' Lecture du répertoire
Set fso = CreateObject("Scripting.FileSystemObject")
Set rep = fso.GetFolder(pth)
Set cfr = rep.Files

' Contrôler chaque fichier du répertoire
For Each fic In cfr
' - Vérifier s'il s'agit d'un fichier Excel...
If StrComp(fso.GetExtensionName(fic.Name), "xlsb", vbTextCompare) = 0 Then
' ... dans l'affirmative, ouvrir le fichier et mettre à jour les liaisons
Set wbk = Workbooks.Open(Filename:=pth & "\" & fic.Name, UpdateLinks:=xlUpdateLinksAlways)
' Copier la colonne en dessous
Set rng = wbk.Worksheets(36).UsedRange
rng.Copy dst


wbk.Worksheets(36).UsedRange: la feuille à traiter est la 36e feuille de chaque classeur du répertoire.

Bref, je dois toujours ouvrir VBA pour changer le chemin d'accès.
Ce que je veux faire, c'est générer une boîte de dialogue qui me demande le dossier à traiter ou bien le chemin d'accès.

PLEASE HELP ME !!! :eek:
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, ebenezerkonan

=>ebenezerkonan
En guise d'exemple
VB:
Sub Choisir_Dossier()
Dim Dossier$
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Choisir un répertoire, svp"
.InitialFileName = ""
If .Show Then Dossier = .SelectedItems(1) Else Exit Sub
End With
MsgBox Dossier
End Sub
PS: Les mots en majuscule dans un message => crier
Et ce n'est pas forcément de bon aloi, comme aurait dit Jacques Capelovici (plutôt vers 20 heures)
;)
 

ebenezerkonan

XLDnaute Nouveau
Sauf que... que faire de cette partie du code?

' Définir le répertoire à lire
pth = "C:\Users\S_ebekonan\Desktop\Dossier EBEN\ETATS 2021\ETATS MOOV MONEY\3-MARS 2021\bouclage du 01"
' Créer le fichier résultat
Set res = Workbooks.Add(xlWBATWorksheet)
Set dst = res.Worksheets(1).Range("A1")

' Lecture du répertoire
Set fso = CreateObject("Scripting.FileSystemObject")
Set rep = fso.GetFolder(pth)
Set cfr = rep.Files


Sans oublier que j'ai défini mes arguments comme suit:

Dim fso As Object 'Système de fichiers
Dim rep As Object 'Répertoire
Dim cfr As Object 'Collection de fichiers du répertoire
Dim fic As Object 'Fichier (élément de la collection cfr)
Dim wbk As Workbook 'Classeur
Dim res As Workbook 'Classeur resultat
Dim rng As Range 'Plage de cellules
Dim dst As Range 'Cellule de destination
Dim pth As String 'Chemin du répertoire
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Mon bout de coude répondait à ceci
Ce que je veux faire, c'est générer une boîte de dialogue qui me demande le dossier
Et pour ceci:
Sauf que... que faire de cette partie du code?
Je t'invite à tomber la chemise et à mouiller le maillot ;)
Mixe ton code avec le mien, fais des essais et des tests
Et si tu bloques, reviens dans le fil en postant le code VBA de tes essais, pour voir ce qui pourrait clocher.
 

Staple1600

XLDnaute Barbatruc
Re

Sinon personnellement, je ne passerais par CreateObject
(à cause des Macistes)
Je ferai un truc dans ce genre
VB:
Sub Choisir_Dossier_BIS()
Dim dossier, pth$, fic$
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Choisir un répertoire, svp"
    .InitialFileName = ""
    If .Show Then dossier = .SelectedItems(1) Else Exit Sub
End With
pth = dossier
fic = Dir(pth & "\*.xlsb")
Do While fic <> ""
    MsgBox fic 'pour test
    fic = Dir()
Loop
End Sub
Normalement, désormais tu as de quoi faire
(Tu peux choisir un dossier et boucler sur les classeurs *.xlsb qu'il contient)
Il ne te reste plus qu'à remettre en place ton bout de code où tu ouvres les classeurs.
Bons tests et essais.
;)
 

ebenezerkonan

XLDnaute Nouveau
Re

Sinon personnellement, je ne passerais par CreateObject
(à cause des Macistes)
Je ferai un truc dans ce genre
VB:
Sub Choisir_Dossier_BIS()
Dim dossier, pth$, fic$
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Choisir un répertoire, svp"
    .InitialFileName = ""
    If .Show Then dossier = .SelectedItems(1) Else Exit Sub
End With
pth = dossier
fic = Dir(pth & "\*.xlsb")
Do While fic <> ""
    MsgBox fic 'pour test
    fic = Dir()
Loop
End Sub
Normalement, désormais tu as de quoi faire
(Tu peux choisir un dossier et boucler sur les classeurs *.xlsb qu'il contient)
Il ne te reste plus qu'à remettre en place ton bout de code où tu ouvres les classeurs.
Bons tests et essais.
;)
ouah je m'y mets.

merciiiiiiiiiiii
 

Statistiques des forums

Discussions
312 174
Messages
2 085 945
Membres
103 055
dernier inscrit
DrKiwi