Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copie de Feuilles

17 réponses
Avatar
Manu
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil sont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les feuil
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en mettant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je souhaiterais
supprimer toutes les feuil sheet

Merci

Manu

10 réponses

1 2
Avatar
JB
Bojour,

http://boisgontierjacques.free.fr/pages_site/GestionOnglets.htm#Consolidati on

JB

On 10 fév, 14:47, "Manu" wrote:
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil s ont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil  Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les feu il
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en me ttant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire e n
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque comp letement

Et une fois que tout sera rappatrié dans ma feuil synthese, je souhaite rais
supprimer toutes les feuil sheet

Merci

Manu


Avatar
isabelle
bonjour Manu,

Sub Macro1()
For Each f In Sheets
If f.Name <> "synthese" Then
x = f.Range("A65536").End(xlUp).Row
y = Sheets("a").Range("A65536").End(xlUp).Row + 1
f.Range("A2:F" & x).Copy Sheets("synthese").Range("A" & y)
End If
Next
End Sub

isabelle

Le 2010-02-10 08:47, Manu a écrit :
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil sont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les feuil
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en mettant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je souhaiterais
supprimer toutes les feuil sheet

Merci

Manu





Avatar
Manu
Bonjour Isabelle,

Il me lance le debongueur sur cette ligne :
y = Sheets("a").Range("A65536").End(xlUp).Row + 1

Manu

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

bonjour Manu,

Sub Macro1()
For Each f In Sheets
If f.Name <> "synthese" Then
x = f.Range("A65536").End(xlUp).Row
y = Sheets("a").Range("A65536").End(xlUp).Row + 1
f.Range("A2:F" & x).Copy Sheets("synthese").Range("A" & y)
End If
Next
End Sub

isabelle

Le 2010-02-10 08:47, Manu a écrit :
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil
sont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les
feuil
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en
mettant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à
F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire
en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque
completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je
souhaiterais
supprimer toutes les feuil sheet

Merci

Manu







Avatar
Corona
Bonjour Manu,
Tu trouveras ci-dessous un exemple de code
Attention
1) On suppose que toutes les données commencent à la cellule A1 et
que la première ligne est remplie de la première colonne à la dernière
et que la première colonne est remplie de la première ligne à la dernière
2) le programme ne vérifie pas si la feuille "Synthese" a déjà été créée.
3) A la destruction de chaque feuille, un message s'affiche
Philippe Tulliez

Sub RegroupeFeuille()
Dim sht As Worksheet, shtA As Worksheet
Dim Nom As String: Nom = "Synthese"
Dim L&, C&, MaxC&
Dim Ligne&, Col&
Set sht = Worksheets.Add: sht.Name = Nom ' Création de la feuille et
attribution du nom
For Each shtA In Worksheets ' Parcourt la collection des feuilles du
classeur
If shtA.Name <> Nom Then ' Omet la feuille qui vient d'être créée
L& = 0: MaxC& = C&
For Ligne = 1 To shtA.Range("A1").End(xlDown).Row: L& = L& + 1: C& =
MaxC&
For Col = 1 To shtA.Range("A1").End(xlToRight).Column: C& = C& + 1
sht.Cells(L&, C&) = shtA.Cells(Ligne, Col):
Next
Next
shtA.Delete ' Détruit la feuille
End If
Next
End Sub

Manu a écrit :
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil sont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les feuil
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
........
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en mettant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je souhaiterais
supprimer toutes les feuil sheet

Merci

Manu




Avatar
FFO
Salut à toi

Je te propose ce code :

For i = 1 To Sheets.Count
If Sheets(i).Name Like "Sheet*" Then
Sheets(i).Range("A1", "F" &
Sheets(i).Range("A1").SpecialCells(xlCellTypeLastCell).Row).Copy
Sheets("synthese").Range("A" &
Sheets("synthese").Range("A1").SpecialCells(xlCellTypeLastCell).Row)
Sheets(i).Visible = False
End If
Next

Il recopie les données de A1 à F(dernière ligne saisie) de chaque onglet
dont le nom commence par "Sheet" dans l'onglet synthese les unes à la suite
des autres
Puis il masque l'onglet traité

J'ai préféré masquer plutôt que de supprimer les Onglets pour un traitement
plus rapide et plus simple

Celà devrait te convenir

Dis moi !!!!!!
Avatar
Manu
Merci,
Je viens de tester le code de FFO et ce bug sur cette ligne :
Sheets("synthese").Range ("A" &
Sheets("synthese").Range("A1").SpecialCells(xlCellTypeLastCell).Row)

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

Salut à toi

Je te propose ce code :

For i = 1 To Sheets.Count
If Sheets(i).Name Like "Sheet*" Then
Sheets(i).Range("A1", "F" &
Sheets(i).Range("A1").SpecialCells(xlCellTypeLastCell).Row).Copy
Sheets("synthese").Range("A" &
Sheets("synthese").Range("A1").SpecialCells(xlCellTypeLastCell).Row)
Sheets(i).Visible = False
End If
Next

Il recopie les données de A1 à F(dernière ligne saisie) de chaque onglet
dont le nom commence par "Sheet" dans l'onglet synthese les unes à la
suite
des autres
Puis il masque l'onglet traité

J'ai préféré masquer plutôt que de supprimer les Onglets pour un
traitement
plus rapide et plus simple

Celà devrait te convenir

Dis moi !!!!!!



Avatar
Manu
Bonjour Philippe,

il arrive que j'ai des cellules vides dans ma plage, en revanche il y
toujours quelque chose en A1

Et je souhaite que toutes les données soit mise les uns en dessous des
autres dans la feuil synthese et non de gauche à droite

Merci

Manu

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

Bonjour Manu,
Tu trouveras ci-dessous un exemple de code
Attention
1) On suppose que toutes les données commencent à la cellule A1 et que
la première ligne est remplie de la première colonne à la dernière et que
la première colonne est remplie de la première ligne à la dernière
2) le programme ne vérifie pas si la feuille "Synthese" a déjà été
créée.
3) A la destruction de chaque feuille, un message s'affiche
Philippe Tulliez
Sub RegroupeFeuille()
Dim sht As Worksheet, shtA As Worksheet
Dim Nom As String: Nom = "Synthese"
Dim L&, C&, MaxC&
Dim Ligne&, Col&
Set sht = Worksheets.Add: sht.Name = Nom ' Création de la feuille et
attribution du nom
For Each shtA In Worksheets ' Parcourt la collection des feuilles du
classeur
If shtA.Name <> Nom Then ' Omet la feuille qui vient d'être créée
L& = 0: MaxC& = C&
For Ligne = 1 To shtA.Range("A1").End(xlDown).Row: L& = L& + 1: C& =
MaxC&
For Col = 1 To shtA.Range("A1").End(xlToRight).Column: C& = C& + 1
sht.Cells(L&, C&) = shtA.Cells(Ligne, Col):
Next
Next
shtA.Delete ' Détruit la feuille
End If
Next
End Sub

Manu a écrit :
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil
sont nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les
feuil Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
........
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en
mettant bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de
A41 à F60 puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire
en utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque
completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je
souhaiterais supprimer toutes les feuil sheet

Merci

Manu





Avatar
Hervé
Bonjour Manu,

Teste ceci. Les plages à récupérer se trouvent en colonnes A à F :

Sub Recup()

Dim FeSynthese As Worksheet
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range

Set FeSynthese = Worksheets("synthese")

For Each Fe In Worksheets

If Fe.Name <> FeSynthese.Name Then

'plage à copier
With Fe
Set Plage = .Range(.[A1], .[F65536].End(xlUp))
End With

'recup de la dernière cellule utilisée
Set Cel = FeSynthese.[A65536].End(xlUp)

'si la feuille "synthese" est vide commence
'en A1, sinon, sous la plage
'précédemment collée
If Cel.Row <> 1 Then
Set Cel = Cel.Offset(1, 0)
End If

Plage.Copy Cel

End If
Next

Set Cel = Nothing
Set Plage = Nothing
Set FeSynthese = Nothing
Set Fe = Nothing

End Sub

Hervé.


"Manu" a écrit dans le message de
news:
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil
sont nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les
feuil Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en
mettant bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de
A41 à F60 puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque
completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je
souhaiterais supprimer toutes les feuil sheet

Merci

Manu




Avatar
Jacky
Bonjour,

Elle est partie à la cafette...;o))))

Corrige comme ceci
'------------
Sub Macro1()
Sheets("synthese").Cells.Clear
For Each f In Sheets
If f.Name <> "synthese" Then
x = f.Range("F65536").End(xlUp).Row
y = Sheets("synthese").Range("A65536").End(xlUp).Row + 1
f.Range("A1:F" & x).Copy Sheets("synthese").Range("A" & y)
End If
Next
End Sub
'------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201002/cijcHbFxMN.xls
Pense aussi à déclarer les variables


--
Salutations
JJ


"Manu" a écrit dans le message de news: %
Bonjour Isabelle,

Il me lance le debongueur sur cette ligne :
y = Sheets("a").Range("A65536").End(xlUp).Row + 1

Manu

"isabelle" a écrit dans le message de news:
bonjour Manu,

Sub Macro1()
For Each f In Sheets
If f.Name <> "synthese" Then
x = f.Range("A65536").End(xlUp).Row
y = Sheets("a").Range("A65536").End(xlUp).Row + 1
f.Range("A2:F" & x).Copy Sheets("synthese").Range("A" & y)
End If
Next
End Sub

isabelle

Le 2010-02-10 08:47, Manu a écrit :
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil sont
nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les feuil
Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en mettant
bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de A41 à F60
puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire en
utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je souhaiterais
supprimer toutes les feuil sheet

Merci

Manu











Avatar
Manu
Ouah, ca fonctionne super bien Hervé, et en plus ultra rapide, mais tout de
meme, deux petits soucis :

1- Il copie egalement des feuils qui ne commencent pas par sheet, en faites
le code ne devrait copier que les plages des feuils commencant par sheet
2- Je souhaite ensuite supprimer toutes les feuil commencant par sheet

Merci de votre aide

Mais comment je fais
"Hervé" a écrit dans le message de news:

Bonjour Manu,

Teste ceci. Les plages à récupérer se trouvent en colonnes A à F :

Sub Recup()

Dim FeSynthese As Worksheet
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range

Set FeSynthese = Worksheets("synthese")

For Each Fe In Worksheets

If Fe.Name <> FeSynthese.Name Then

'plage à copier
With Fe
Set Plage = .Range(.[A1], .[F65536].End(xlUp))
End With

'recup de la dernière cellule utilisée
Set Cel = FeSynthese.[A65536].End(xlUp)

'si la feuille "synthese" est vide commence
'en A1, sinon, sous la plage
'précédemment collée
If Cel.Row <> 1 Then
Set Cel = Cel.Offset(1, 0)
End If

Plage.Copy Cel

End If
Next

Set Cel = Nothing
Set Plage = Nothing
Set FeSynthese = Nothing
Set Fe = Nothing

End Sub

Hervé.


"Manu" a écrit dans le message de
news:
Bonjour,

J'ai un classeur qui peut comporter entre 20 et 80 feuil. 80% des feuil
sont nommées Sheet1 ; Sheet2 ; Sheet3 ....etc
Chaque Feuil Sheet est remplis en colonne de A à F et en ligne c'est
variable

Jai une feuil qui se nomme synthese et je souhaiterais que toutes les
feuil Sheet se collent dans cette feuil synthese et dans l'ordre.

Exemple :
Si Sheet1 est remplie de A1 à F40
Si Sheet2 est remplie de A1 à F20
Si Sheet3 est remplie de A1 à F30
.......
Alors je souhaiterais que ma feuil synthese soit remplie A1 à F90 en
mettant bien dans l'ordre le contenu de Sheet1 de A1 à F40 puis Sheet2 de
A41 à F60 puis Sheet3 de A61 à F90 ....

J'espere avoir été clair,

Ne connaissant pas le VBA, je pourrais me faire enregistrer et le faire
en utilisant les raccourcis clavier mais non seulement ce sera long mais
surtout le nombre de feuil Sheet n'est jamais le meme, ca peut aller de
Sheet1 à Sheet 21 comme de Sheet1 à Sheet 70. Et là, je bloque
completement

Et une fois que tout sera rappatrié dans ma feuil synthese, je
souhaiterais supprimer toutes les feuil sheet

Merci

Manu







1 2