Changer LB par nom des feuilles
bonsoir a tous et toutes
dans ce code comment peut'on faire que Lb et X soit remplacer par le nom des classeurs dont l'apercu suit
qui sont sous C:\Facturation\articles
quand il fonctionne il faut que chaque classeur soit nommé LB_ 1 ou 2 etc mais je voudrais remplacer par le nom effectif des classeurs qui sont aussi le nom des fournisseurs dans la combobox
Private Sub UserForm_Initialize()
Dim wb As Workbook
Dim ws As Worksheet
Dim A As Byte, B As Byte, c As Byte, D As Byte, e As Byte
Dim X As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
USF_articles_heure
For X = 1 To 10
Set wb = Workbooks.Open("C:\Facturation\articles\LB_" & X & ".xlsx")
Set wb = Workbooks("LB_" & X & ".xlsx")
Set ws = Worksheets(1)
'nettoyage
Me.Controls("ListBox" & X).Clear
A = 2 'colonne B
B = 3 'colonne C
c = 4 'colonne D
D = 5 'colonne E
e = 6 'colonne F
With Me.Controls("ListBox" & X)
.List() = ws.Range(ws.Cells(1, A), ws.Cells(1234, e)).Value
'affichage entête colonne
.ColumnHeads = False 'où true
'nombre de colonne
.ColumnCount = 5
'largeur de la colonne
.ColumnWidths = "60;280;50;50;50"
End With
wb.Close
Me.OB10.Value = 1
Next X
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Alors j'ai fait un truc similaire pour une de mes macros, étant donné que la macro a été developpé pour le boulot j'ai pas le code sous la main (je sais c pas bien de pas tout garder chez soi). Mais bon l'idée est simple il suffit de parcourir le dossier dans lequel est stocké tes fichier au démarage de la macro et enuite de stocker les noms de fichiers soit dans un tableau en mémoire soit sur une feuille excel ensuite tu appelle ça avec ta boucle.
En faisant une recherche sur des tutos de gestions de fichier tu devrais retrouver ca... à moins que quelqu'un te donne une soluce d'ici lundi, sinon je te posterai la mienne lundi dans la journée
bonsoir astragor
merci de ta réponse, je sais qyu'en faissant comme ceci j'ouvre un classeur mais il faudrai que ca ouvre celui qui est selectionner dans la compbobox
Workbooks.Open ("C:\Facturation\articles\plomberie.xlsx") mais pas envie d'écrire 10 lignes de codes avec des if end if else
Ou tu vois des tests de partout toi ?
Si tes fichiers sont dans le même ordre que ta combobox et que tu stock ta liste dans un tableau mémoire
tu récupère l'indice dans ton combobox.
En faisant un truc du style
nomfichier = tableau[combobox.Listindex]pas tout à fait sur de la syntaxe exacte, mais je te fais confiance tu retrouvera
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
ci-dessous proposition de code
'// Insérer la référence Microsoft Scripting runtime ..............................................
Private Sub UserForm_Initialize()
Dim fso As New FileSystemObject, dossier_fournisseurs As Folder, fichier As File
Dim wb As Workbook, ws As Worksheet
Dim A As Byte, B As Byte, c As Byte, D As Byte, e As Byte
Dim X As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
USF_articles_heure
Set dossier_fournisseurs = fso.GetFolder("C:\Facturation\articles")
X = 1
For Each fichier In dossier_fournisseurs.Files
If fso.GetExtensionName(fichier.Path) = "xlsx" Then
Set wb = Workbooks.Open(fichier.Path)
Set ws = wb.Worksheets(1)
With Me.Controls("ListBox" & X)
'nettoyage
.Clear
'remplissage
.List() = ws.Range(ws.Cells(1, "B"), ws.Cells(1234, "F")).Value
'affichage entête colonne
.ColumnHeads = False 'où true
'nombre de colonne
.ColumnCount = 5
'largeur de la colonne
.ColumnWidths = "60;280;50;50;50"
'référence nom du classeur
.Tag = fichier.Name
End With
wb.Close
Me.OB10.Value = 1
X = X + 1
End If
Next fichier
Application.ScreenUpdating = True
Application.EnableEvents = True
End Subbonsoir Thev
merci beaucoup de ta réponse car c'est tout a fait cela que j'attendais
un grand merci