OVH Cloud OVH Cloud

Copier plusieurs Feuilles (Feuil1,Feuil2.....) dans une seule???

5 réponses
Avatar
El_Diablo84
Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.

5 réponses

Avatar
michdenis
Bonjour El_Diablo84,


Copie ce qui suit dans un module standard,

La feuille résultat s'appelle : "DmResultat" où se retrouve la compilation de tes feuilles.

P.S. Une feuille ne peut dépasser 65536 lignes ...


'--------------------------------------
Sub TableauFinal()

Dim sh As Worksheet, F As Worksheet

Set sh = Worksheets.Add
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DmResultat").Delete
Application.DisplayAlerts = True
sh.Name = "DmResultat"

For Each F In Worksheets
If F.Name <> sh.Name Then
If WorksheetFunction.CountA(F.UsedRange) <> 0 Then
With F
.Range(.Cells(1, 1), .Cells(DerLig(F), DerCol(F))).Copy _
sh.Cells(DerLig(sh) + 1, 1)
End With
End If
End If
Next
Set sh = Nothing: Set F = Nothing


End Sub

'--------------------------------------
Function DerLig(sh As Worksheet)
On Error Resume Next
DerLig = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Function
'--------------------------------------
Function DerCol(sh As Worksheet)
On Error Resume Next
DerCol = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End Function
'--------------------------------------





"El_Diablo84" a écrit dans le message de news:

Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.
Avatar
El_Diablo84
Merci pour la reponse rapide, je teste tout de suite. ;-)


Bonjour El_Diablo84,


Copie ce qui suit dans un module standard,

La feuille résultat s'appelle : "DmResultat" où se retrouve la compilation de tes feuilles.

P.S. Une feuille ne peut dépasser 65536 lignes ...


'--------------------------------------
Sub TableauFinal()

Dim sh As Worksheet, F As Worksheet

Set sh = Worksheets.Add
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DmResultat").Delete
Application.DisplayAlerts = True
sh.Name = "DmResultat"

For Each F In Worksheets
If F.Name <> sh.Name Then
If WorksheetFunction.CountA(F.UsedRange) <> 0 Then
With F
.Range(.Cells(1, 1), .Cells(DerLig(F), DerCol(F))).Copy _
sh.Cells(DerLig(sh) + 1, 1)
End With
End If
End If
Next
Set sh = Nothing: Set F = Nothing


End Sub

'--------------------------------------
Function DerLig(sh As Worksheet)
On Error Resume Next
DerLig = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Function
'--------------------------------------
Function DerCol(sh As Worksheet)
On Error Resume Next
DerCol = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End Function
'--------------------------------------





"El_Diablo84" a écrit dans le message de news:

Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.





Avatar
El_Diablo84
ça marche tres bien pour tous mes fichiers, mais effectivement je depasse les
65536 lignes pour le fichier le plus important !!

y'a-t'il une possibilité????

Merci


Bonjour El_Diablo84,


Copie ce qui suit dans un module standard,

La feuille résultat s'appelle : "DmResultat" où se retrouve la compilation de tes feuilles.

P.S. Une feuille ne peut dépasser 65536 lignes ...


'--------------------------------------
Sub TableauFinal()

Dim sh As Worksheet, F As Worksheet

Set sh = Worksheets.Add
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DmResultat").Delete
Application.DisplayAlerts = True
sh.Name = "DmResultat"

For Each F In Worksheets
If F.Name <> sh.Name Then
If WorksheetFunction.CountA(F.UsedRange) <> 0 Then
With F
.Range(.Cells(1, 1), .Cells(DerLig(F), DerCol(F))).Copy _
sh.Cells(DerLig(sh) + 1, 1)
End With
End If
End If
Next
Set sh = Nothing: Set F = Nothing


End Sub

'--------------------------------------
Function DerLig(sh As Worksheet)
On Error Resume Next
DerLig = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Function
'--------------------------------------
Function DerCol(sh As Worksheet)
On Error Resume Next
DerCol = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End Function
'--------------------------------------





"El_Diablo84" a écrit dans le message de news:

Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.





Avatar
michdenis
| y'a-t'il une possibilité????

Si cela signifie d'ajouter des lignes à une feuille excel ? La réponse est non.
Tu auras besoin de 2 feuilles de résultat et d'adapter un peu la procédure. ou de l'application Access...


Salutations!





"El_Diablo84" a écrit dans le message de news:

ça marche tres bien pour tous mes fichiers, mais effectivement je depasse les
65536 lignes pour le fichier le plus important !!

y'a-t'il une possibilité????

Merci


Bonjour El_Diablo84,


Copie ce qui suit dans un module standard,

La feuille résultat s'appelle : "DmResultat" où se retrouve la compilation de tes feuilles.

P.S. Une feuille ne peut dépasser 65536 lignes ...


'--------------------------------------
Sub TableauFinal()

Dim sh As Worksheet, F As Worksheet

Set sh = Worksheets.Add
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DmResultat").Delete
Application.DisplayAlerts = True
sh.Name = "DmResultat"

For Each F In Worksheets
If F.Name <> sh.Name Then
If WorksheetFunction.CountA(F.UsedRange) <> 0 Then
With F
.Range(.Cells(1, 1), .Cells(DerLig(F), DerCol(F))).Copy _
sh.Cells(DerLig(sh) + 1, 1)
End With
End If
End If
Next
Set sh = Nothing: Set F = Nothing


End Sub

'--------------------------------------
Function DerLig(sh As Worksheet)
On Error Resume Next
DerLig = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Function
'--------------------------------------
Function DerCol(sh As Worksheet)
On Error Resume Next
DerCol = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End Function
'--------------------------------------





"El_Diablo84" a écrit dans le message de news:

Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.





Avatar
El_Diablo84
Merci pour les infos, je vais tenter avec 2 feuilles de resultat

+++


| y'a-t'il une possibilité????

Si cela signifie d'ajouter des lignes à une feuille excel ? La réponse est non.
Tu auras besoin de 2 feuilles de résultat et d'adapter un peu la procédure. ou de l'application Access...


Salutations!





"El_Diablo84" a écrit dans le message de news:

ça marche tres bien pour tous mes fichiers, mais effectivement je depasse les
65536 lignes pour le fichier le plus important !!

y'a-t'il une possibilité????

Merci


Bonjour El_Diablo84,


Copie ce qui suit dans un module standard,

La feuille résultat s'appelle : "DmResultat" où se retrouve la compilation de tes feuilles.

P.S. Une feuille ne peut dépasser 65536 lignes ...


'--------------------------------------
Sub TableauFinal()

Dim sh As Worksheet, F As Worksheet

Set sh = Worksheets.Add
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DmResultat").Delete
Application.DisplayAlerts = True
sh.Name = "DmResultat"

For Each F In Worksheets
If F.Name <> sh.Name Then
If WorksheetFunction.CountA(F.UsedRange) <> 0 Then
With F
.Range(.Cells(1, 1), .Cells(DerLig(F), DerCol(F))).Copy _
sh.Cells(DerLig(sh) + 1, 1)
End With
End If
End If
Next
Set sh = Nothing: Set F = Nothing


End Sub

'--------------------------------------
Function DerLig(sh As Worksheet)
On Error Resume Next
DerLig = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Function
'--------------------------------------
Function DerCol(sh As Worksheet)
On Error Resume Next
DerCol = sh.Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End Function
'--------------------------------------





"El_Diablo84" a écrit dans le message de news:

Bonjour,

J'utilise un outil pour generer des rapports, ces rapports sont exportés en
Xls. Je me retrouve avec un fichier excel comprenant pres de 4000 onglets
(Sheet1, Sheet2....)

Je souhaite regrouper toutes les feuilles dans une seule, afin de pouvoir
créer ma liste. Comment puis-je proceder sans avoir à faire 4000 copier
coller !!!!

Merci d'avance.