Bonjour le forum, et bonjour bebere
je lui dit bonjuor car il m`a trop aide sur le fil ci dessous
https://www.excel-downloads.com/threads/presque-fini-transfert-feuilles-files.70546/
La macro va chercher ds des files fermes les feuilles "Cash position" et les reunis ds 1 seul fichier en reprenant le nom du file comme nom de l`onglet.
Mon probleme est que mes files ont un nom trop long donc le nom n`est pas repris ds l`onglet quand je reunis toutes mes feuilles "Cash position".
Comment dire a la macro que le nom de l`onglet doit etre le premier terme du fichier :
par exemple mon file s`appelle BOUBOG - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx et un autre FEAR - YYYYYYYYYYYYYYYYYYY, comment dire a la macro que je veux le terme a gauche du " -"?? donc 1 onglet BOUBOG et un autre FEAR??
ci-dessous le code de cette superbe macro
Private Sub selection_Click()
Dim I As Integer, S As Byte
Dim WkSource As Workbook, WkDest As Workbook
Dim Nom As String
Dim iSheets As Integer 'nbre feuille dans nouveau classeur
With Application
iSheets = .SheetsInNewWorkbook
.SheetsInNewWorkbook = 1
.ScreenUpdating = False 'true
.DisplayAlerts = False 'true
End With
Set WkDest = Workbooks.Add
Application.SheetsInNewWorkbook = iSheets
With liste
For I = 0 To .ListCount - 1
Nom = .List(I, 0) 'liste.Value
Set WkSource = Workbooks.Open(Filename:=NomDossier & Nom)
For S = 1 To Sheets.Count
If Left(Sheets(S).Name, 13) = "CASH POSITION" Then
If I = 0 Then
WkSource.Sheets(S).Cells.Copy Destination:=WkDest.Sheets(1).Cells(1, 1)
WkDest.Sheets(1).Name = Nom
Else:
WkDest.Activate
Sheets.Add.Move After:=Sheets(Sheets.Count)
WkSource.Sheets(S).Cells.Copy Destination:=WkDest.Sheets(Sheets.Count).Cells(1, 1)
WkDest.Sheets(Sheets.Count).Name = Nom
End If
Exit For
End If
Next S
'Set Rng = Nothing
WkSource.Close
Next I
End With
WkDest.SaveAs Filename:=NomDossier & "Total" & Left(Nom, 2)
WkDest.Close
With Application
.ScreenUpdating = True ' False
.DisplayAlerts = True 'False
End With
End Sub
merci pour votre aide... ou merci Bebere si tu rodes!
A+
VBA_DEAD
je lui dit bonjuor car il m`a trop aide sur le fil ci dessous
https://www.excel-downloads.com/threads/presque-fini-transfert-feuilles-files.70546/
La macro va chercher ds des files fermes les feuilles "Cash position" et les reunis ds 1 seul fichier en reprenant le nom du file comme nom de l`onglet.
Mon probleme est que mes files ont un nom trop long donc le nom n`est pas repris ds l`onglet quand je reunis toutes mes feuilles "Cash position".
Comment dire a la macro que le nom de l`onglet doit etre le premier terme du fichier :
par exemple mon file s`appelle BOUBOG - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx et un autre FEAR - YYYYYYYYYYYYYYYYYYY, comment dire a la macro que je veux le terme a gauche du " -"?? donc 1 onglet BOUBOG et un autre FEAR??
ci-dessous le code de cette superbe macro
Private Sub selection_Click()
Dim I As Integer, S As Byte
Dim WkSource As Workbook, WkDest As Workbook
Dim Nom As String
Dim iSheets As Integer 'nbre feuille dans nouveau classeur
With Application
iSheets = .SheetsInNewWorkbook
.SheetsInNewWorkbook = 1
.ScreenUpdating = False 'true
.DisplayAlerts = False 'true
End With
Set WkDest = Workbooks.Add
Application.SheetsInNewWorkbook = iSheets
With liste
For I = 0 To .ListCount - 1
Nom = .List(I, 0) 'liste.Value
Set WkSource = Workbooks.Open(Filename:=NomDossier & Nom)
For S = 1 To Sheets.Count
If Left(Sheets(S).Name, 13) = "CASH POSITION" Then
If I = 0 Then
WkSource.Sheets(S).Cells.Copy Destination:=WkDest.Sheets(1).Cells(1, 1)
WkDest.Sheets(1).Name = Nom
Else:
WkDest.Activate
Sheets.Add.Move After:=Sheets(Sheets.Count)
WkSource.Sheets(S).Cells.Copy Destination:=WkDest.Sheets(Sheets.Count).Cells(1, 1)
WkDest.Sheets(Sheets.Count).Name = Nom
End If
Exit For
End If
Next S
'Set Rng = Nothing
WkSource.Close
Next I
End With
WkDest.SaveAs Filename:=NomDossier & "Total" & Left(Nom, 2)
WkDest.Close
With Application
.ScreenUpdating = True ' False
.DisplayAlerts = True 'False
End With
End Sub
merci pour votre aide... ou merci Bebere si tu rodes!
A+
VBA_DEAD