XL 2016 Classeur rassembleur( 18 .xls=> 1 .xls)

Claudy

XLDnaute Accro
Bonjour à tous,
j'ai un dossier (nommé Extra) avec plusieurs classeurs .xls qui commencent par 330-....(voir capture d'écran)
1585921994573.png

Comment créer un seul classeur reprenant tous les onglets renommés du nom du classeur(330-74...)

Merci d'avance,

Claudy
 

job75

XLDnaute Barbatruc
Bonjour Claudy, JM, Roblochon,

Pour créer les onglets :
VB:
Sub Onglets()
Dim i%, chemin$, fichier$
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
    '---supprime les onglets existants sauf le 1er---
    For i = .Sheets.Count To 2 Step -1
        .Sheets(i).Delete
    Next
    .Sheets(1).Name = Chr(1)
    '---crée les onglets---
    chemin = .Path & "\" 'à adapter
    fichier = Dir(chemin & "*.xls*")
    While fichier <> ""
        If fichier <> .Name Then
            .Sheets.Add After:=.Sheets(.Sheets.Count)
            .Sheets(.Sheets.Count).Name = fichier
        End If
        fichier = Dir
    Wend
    .Sheets(1).Delete
End With
End Sub
Et ensuite qu'est-ce qu'on en fait de ces onglets ?

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Et ensuite qu'est-ce qu'on en fait de ces onglets ?
On peut les remplir en copiant les données et formats de la 1ère feuille de chaque fichier source :
VB:
Sub Onglets()
Dim i%, chemin$, fichier$, F As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
    '---supprime les onglets existants sauf le 1er---
    For i = .Sheets.Count To 2 Step -1
        .Sheets(i).Delete
    Next
    .Sheets(1).Name = Chr(1)
    '---crée les onglets---
    chemin = .Path & "\" 'à adapter
    fichier = Dir(chemin & "*.xls*")
    While fichier <> ""
        If fichier <> .Name Then
            .Sheets.Add After:=.Sheets(.Sheets.Count)
            Set F = .Sheets(.Sheets.Count)
            F.Name = fichier
            With Workbooks.Open(chemin & fichier).Worksheets(1) 'ouvre le fichier
                With .Range("A1", .UsedRange)
                    .EntireRow.Copy F.Cells(1) 'pour les formats
                    F.Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value 'copie les valeurs
                End With
                .Parent.Close 'ferme le fichier
            End With
            F.Columns.AutoFit 'ajustement largeurs
        End If
        fichier = Dir
    Wend
    .Sheets(1).Delete
    .Sheets(1).Activate
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 070
Membres
103 455
dernier inscrit
saramachado