• Initiateur de la discussion Initiateur de la discussion FAUB
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

FAUB

Guest
Bonjour le forum,

J'utilise la macro suivante (prise sur le site de Mr Boisgontier) pour rappatrier les onglets "Base" de différents classeur dans un même classeur.

Sub Rappatrier_Onglets_Click()
Dim fileName As String, nbFiles As Integer, curfile, curWbk As Workbook, FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogFilePicker)
FD.AllowMultiSelect = True
FD.Filters.Clear
FD.Filters.Add Description:="Excel Files", Extensions:="*.xls;*.xlsx"
FD.Show
For Each curfile In FD.SelectedItems
Set curWbk = Application.Workbooks.Open(fileName:=curfile)
curWbk.Sheets("Base").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
curWbk.Close savechanges:=False
Next curfile
End Sub



J'aimerais que lorsque les onglets sont copiés dans le nouveau classeur, ils soient renommés avec le nom de leur fichier d'origine.

Savez-vous qu'est-ce que je dois ajouter ?
Merci d'avance.

FAUB
 
Re : VBA Conso d'onglets

Bonjour...

essaye ceci...
Code:
Set curWbk = Application.Workbooks.Open(fileName:=curfile)
curWbk.Sheets("Base").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = curWbk.Name ' Ajouter à ton code

curWbk.Close savechanges:=False

Salut
 
Re : VBA Conso d'onglets

Ca marche aussi très bien, merci mromain.

Dernière chose, lorsque j'utilise cette macro, les onglets sont rappatriés avec des formules. Comment pourrais-je les coller en Valeur ?

Merci pour votre aide.
 
Re : VBA Conso d'onglets

re,

à tester :
Code:
Set curWbk = Application.Workbooks.Open(Filename:=curfile)
curWbk.Sheets("Base").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    .Name = Left(curWbk.Name, Len(curWbk.Name) - 4)
    .Cells.Copy
    .Cells.PasteSpecial (xlPasteValues)
    Application.CutCopyMode = False
End With
curWbk.Close savechanges:=False

a+
 
Re : VBA Conso d'onglets

Très bien aussi.
Parfois les "Bases" sont filtrées. Quelle ligne puis-je ajouter pour défiltrer le tableau avant de faire le copier collage valeur, sans que la macro bloque quand il n'y a pas de filtre activé ?

Merci bcp !

FAUB
 
Re : VBA Conso d'onglets

bonjour FAUB,

si j'ai bien compris :
Code:
Sub t()
Set curWbk = Application.Workbooks.Open(Filename:=curfile)
curWbk.Sheets("Base").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    .Name = Left(curWbk.Name, Len(curWbk.Name) - 4)
    .Cells.AutoFilter
    .Cells.Copy
    .Cells.PasteSpecial (xlPasteValues)
    Application.CutCopyMode = False
End With
curWbk.Close savechanges:=False
End Sub

a+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
1
Affichages
3 K
sadness78
S
Réponses
5
Affichages
1 K
Gengiskhan
G
G
Réponses
2
Affichages
2 K
Gengiskhan
G
B
Réponses
2
Affichages
6 K
Bernard91
B
J
Réponses
0
Affichages
1 K
Jacques
J
Retour