Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est
que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le
fais j'ai une erreur qui me dit que la procédure est trop longue.
Visiblement il y a un nombre de lignes maximum à respecter dans une
macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" :
Range("A6:D57").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap Annuelle").Select
Range("DA2498").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Bonsoir "Laure", si c'est chaque fois Range("DA2498") cela va écraser?? .Sinon pour faire un récap en Feuil1, exemple En admettant donc que Feuil1 (le recap) sera en tête et que suivent les 52 feuilles semaines.(rien d'autre) :
'*** Sub recop() Dim sh As Worksheet Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Worksheets If sh.Index > 1 Then sh.Range("A6:D57").Copy Sheets("Feuil1").[a65536].End(xlUp) _ .Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues End If Next Application.ScreenUpdating = True End Sub '*** 'lSteph
"Laure" a écrit dans le message de news: dqucln$m9k$
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
Bonsoir "Laure",
si c'est chaque fois Range("DA2498") cela va écraser??
.Sinon
pour faire un récap en Feuil1, exemple
En admettant donc que Feuil1 (le recap) sera en tête et que suivent les 52
feuilles semaines.(rien d'autre) :
'***
Sub recop()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 1 Then
sh.Range("A6:D57").Copy
Sheets("Feuil1").[a65536].End(xlUp) _
.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
End If
Next
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Laure" <laure@nospam.com> a écrit dans le message de news:
dqucln$m9k$1@aphrodite.grec.isp.9tel.net...
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est
que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je
le fais j'ai une erreur qui me dit que la procédure est trop longue.
Visiblement il y a un nombre de lignes maximum à respecter dans une
macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" :
Range("A6:D57").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap Annuelle").Select
Range("DA2498").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
_
:úlse, Transpose:úlse
Bonsoir "Laure", si c'est chaque fois Range("DA2498") cela va écraser?? .Sinon pour faire un récap en Feuil1, exemple En admettant donc que Feuil1 (le recap) sera en tête et que suivent les 52 feuilles semaines.(rien d'autre) :
'*** Sub recop() Dim sh As Worksheet Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Worksheets If sh.Index > 1 Then sh.Range("A6:D57").Copy Sheets("Feuil1").[a65536].End(xlUp) _ .Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues End If Next Application.ScreenUpdating = True End Sub '*** 'lSteph
"Laure" a écrit dans le message de news: dqucln$m9k$
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
Michel Gaboly
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes feui lles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Val ue = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Off set ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
-- Cordialement,
Michel Gaboly www.gaboly.com
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes feui lles et plages. Quant aux Copier Collage Special,
une simple égalité les remplace avantageusement.
Sub Récap()
Dim i As Integer
With Sheets("Récap Annuelle").Range("DA2445")
For i = 1 To 4
Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Val ue = Sheets("Semaine " & Format(i,
"00")).Range("A6:D57").Value
Next
End With
End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Off set ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est
que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le
fais j'ai une erreur qui me dit que la procédure est trop longue.
Visiblement il y a un nombre de lignes maximum à respecter dans une
macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" :
Range("A6:D57").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap Annuelle").Select
Range("DA2498").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _
:=False, Transpose:=False
On peut diviser par + de 52, car de sélectionner les différentes feui lles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Val ue = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Off set ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
-- Cordialement,
Michel Gaboly www.gaboly.com
Laure
Merci beaucoup !! Ca fonctionne impeccable ! Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" a écrit dans le message de news:
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes feuilles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Value = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Offset ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
-- Cordialement,
Michel Gaboly www.gaboly.com
Merci beaucoup !!
Ca fonctionne impeccable !
Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
uvdfjGuHGHA.2064@TK2MSFTNGP09.phx.gbl...
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes feuilles et
plages. Quant aux Copier Collage Special,
une simple égalité les remplace avantageusement.
Sub Récap()
Dim i As Integer
With Sheets("Récap Annuelle").Range("DA2445")
For i = 1 To 4
Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Value
= Sheets("Semaine " & Format(i,
"00")).Range("A6:D57").Value
Next
End With
End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Offset
... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est
que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je
le fais j'ai une erreur qui me dit que la procédure est trop longue.
Visiblement il y a un nombre de lignes maximum à respecter dans une
macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" :
Range("A6:D57").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap Annuelle").Select
Range("DA2498").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
_
:úlse, Transpose:úlse
Merci beaucoup !! Ca fonctionne impeccable ! Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" a écrit dans le message de news:
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes feuilles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).Value = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.Offset ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
-- Cordialement,
Michel Gaboly www.gaboly.com
Michel Gaboly
De rien, c'était avec plaisir ;-))
L'amélioration en terme de vitesse montre bien que les Select et les Co pier-Coller sont à éviter autant que possble ;-)))
Merci beaucoup !! Ca fonctionne impeccable ! Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" a écrit dans le message de news:
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes fe uilles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).V alue = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.O ffset ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _ :úlse, Transpose:úlse
Ce qui diviserait la longueur par 52 !! :-)
Merci d'avance !! Laure
-- Cordialement,
Michel Gaboly www.gaboly.com
De rien, c'était avec plaisir ;-))
L'amélioration en terme de vitesse montre bien que les Select et les Co pier-Coller sont à éviter autant que possble ;-)))
Merci beaucoup !!
Ca fonctionne impeccable !
Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
uvdfjGuHGHA.2064@TK2MSFTNGP09.phx.gbl...
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes fe uilles et
plages. Quant aux Copier Collage Special,
une simple égalité les remplace avantageusement.
Sub Récap()
Dim i As Integer
With Sheets("Récap Annuelle").Range("DA2445")
For i = 1 To 4
Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).V alue
= Sheets("Semaine " & Format(i,
"00")).Range("A6:D57").Value
Next
End With
End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.O ffset
... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est
que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je
le fais j'ai une erreur qui me dit que la procédure est trop longue.
Visiblement il y a un nombre de lignes maximum à respecter dans une
macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" :
Range("A6:D57").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap Annuelle").Select
Range("DA2498").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks
_
:=False, Transpose:=False
L'amélioration en terme de vitesse montre bien que les Select et les Co pier-Coller sont à éviter autant que possble ;-)))
Merci beaucoup !! Ca fonctionne impeccable ! Et en plus la macro s'exécute beaucoup rapidement !!
Laure
"Michel Gaboly" a écrit dans le message de news:
Bonsoir,
On peut diviser par + de 52, car de sélectionner les différentes fe uilles et plages. Quant aux Copier Collage Special, une simple égalité les remplace avantageusement.
Sub Récap() Dim i As Integer With Sheets("Récap Annuelle").Range("DA2445") For i = 1 To 4 Range(.Offset((i - 1) * 52 + 1), .Offset(i * 52, 3)).V alue = Sheets("Semaine " & Format(i, "00")).Range("A6:D57").Value Next End With End Sub
NB - L'instruction entre le "For i = 1 to 52" et le "Next", "Range(.O ffset ... ).Value" doit être sur une seule ligne.
Elle fonctionne parfaitement, mais elle est bien longue. Le problème c'est que je souhaiterais la rallonger encore, y rajouter des trucs, mais si je le fais j'ai une erreur qui me dit que la procédure est trop longue. Visiblement il y a un nombre de lignes maximum à respecter dans une macro....
Y a-t-il moyen de la raccourcir en quelque chose du genre :
'pour chaque feuille nommée de "Semaine 01" à "Semaine 52" : Range("A6:D57").Select Application.CutCopyMode = False Selection.Copy Sheets("Récap Annuelle").Select Range("DA2498").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _ :úlse, Transpose:úlse