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
apercu dossier articles

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

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 Sub

bonsoir Thev

merci beaucoup de ta réponse car c'est tout a fait cela que j'attendais

un grand merci

Rechercher des sujets similaires à "changer nom feuilles"