Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uyaL4QVaKHA.2188@TK2MSFTNGP04.phx.gbl...
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:enwVmKVaKHA.1592@TK2MSFTNGP06.phx.gbl...
Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
u$AbfGVaKHA.5472@TK2MSFTNGP02.phx.gbl...
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:uWFSFAVaKHA.5284@TK2MSFTNGP06.phx.gbl...
A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
#iBG95UaKHA.4312@TK2MSFTNGP04.phx.gbl...
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:OTzBivUaKHA.5852@TK2MSFTNGP05.phx.gbl...
Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uXq0xeUaKHA.2188@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uyaL4QVaKHA.2188@TK2MSFTNGP04.phx.gbl...
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:enwVmKVaKHA.1592@TK2MSFTNGP06.phx.gbl...
Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
u$AbfGVaKHA.5472@TK2MSFTNGP02.phx.gbl...
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:uWFSFAVaKHA.5284@TK2MSFTNGP06.phx.gbl...
A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
#iBG95UaKHA.4312@TK2MSFTNGP04.phx.gbl...
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:OTzBivUaKHA.5852@TK2MSFTNGP05.phx.gbl...
Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uXq0xeUaKHA.2188@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles +
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière : en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Comme ceci :
If LCase(Sh.Name) <> LCase("recap") And _
Sh.Name <> LCase("stat") And _
Sh.Name <> LCase("stat") Then
"Greg" a écrit dans le message de groupe de discussion :
Bonjour,
Désolé de créer un nouveau post mais je voulais être visible !!!
La procédure indiquée précédement fonctionne à merveille.
Cependant, j'ai crée 2 onglets supplémentaires "STAT" et "SERVICES"
Quand j'applique la procédure il me copie ces 2 nouvelles feuilles !!!
Le début de la procédure commence par :
If LCase(Sh.Name) <> LCase("recap") Then
est-il possible d'indiquer : <> LCase("recap") LCase("stat")
LCase("services")
encore merci pour votre aide.
***************************
Rappel de la procédure totale
***************************
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A3", .Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A4", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
"michdenis" a écrit dans le message de
news:%Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles
+
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière :
en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles
en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Comme ceci :
If LCase(Sh.Name) <> LCase("recap") And _
Sh.Name <> LCase("stat") And _
Sh.Name <> LCase("stat") Then
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
O9zFjNHbKHA.5576@TK2MSFTNGP02.phx.gbl...
Bonjour,
Désolé de créer un nouveau post mais je voulais être visible !!!
La procédure indiquée précédement fonctionne à merveille.
Cependant, j'ai crée 2 onglets supplémentaires "STAT" et "SERVICES"
Quand j'applique la procédure il me copie ces 2 nouvelles feuilles !!!
Le début de la procédure commence par :
If LCase(Sh.Name) <> LCase("recap") Then
est-il possible d'indiquer : <> LCase("recap") LCase("stat")
LCase("services")
encore merci pour votre aide.
***************************
Rappel de la procédure totale
***************************
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A3", .Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A4", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:%23DRe4VVaKHA.2164@TK2MSFTNGP02.phx.gbl...
Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uyaL4QVaKHA.2188@TK2MSFTNGP04.phx.gbl...
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:enwVmKVaKHA.1592@TK2MSFTNGP06.phx.gbl...
Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
u$AbfGVaKHA.5472@TK2MSFTNGP02.phx.gbl...
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:uWFSFAVaKHA.5284@TK2MSFTNGP06.phx.gbl...
A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
#iBG95UaKHA.4312@TK2MSFTNGP04.phx.gbl...
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles
+
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:OTzBivUaKHA.5852@TK2MSFTNGP05.phx.gbl...
Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" <gg@nor.fr> a écrit dans le message de groupe de discussion :
uXq0xeUaKHA.2188@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière :
en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles
en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)
Comme ceci :
If LCase(Sh.Name) <> LCase("recap") And _
Sh.Name <> LCase("stat") And _
Sh.Name <> LCase("stat") Then
"Greg" a écrit dans le message de groupe de discussion :
Bonjour,
Désolé de créer un nouveau post mais je voulais être visible !!!
La procédure indiquée précédement fonctionne à merveille.
Cependant, j'ai crée 2 onglets supplémentaires "STAT" et "SERVICES"
Quand j'applique la procédure il me copie ces 2 nouvelles feuilles !!!
Le début de la procédure commence par :
If LCase(Sh.Name) <> LCase("recap") Then
est-il possible d'indiquer : <> LCase("recap") LCase("stat")
LCase("services")
encore merci pour votre aide.
***************************
Rappel de la procédure totale
***************************
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A3", .Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A4", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
"michdenis" a écrit dans le message de
news:%Si la feuille "Recap" existe, tu peux remplacer ceci :
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
Par :
Set ShDest = Worksheets("Recap")
ShDest.Cells.Clear
Tout le contenu et le format des cellules seront vidés.
"Greg" a écrit dans le message de groupe de discussion :
MAGNIFIQUE ça fonctionne, merci michdenis
dernière question (la cerise sur le gâteau comme on dit) :
Plutôt que de supprimer et d'ajouter la feuille "recap" est-il possible
d'avoir la même procédure mais avec une feuille RECAP existante
on pourrait par exemple supprimer l'ensemble des lignes (ou colonnes)
avant
execution de la procédure. qu'en penses-tu?
Merci encore
Greg
"michdenis" a écrit dans le message de
news:Il manque un "point "." devant le Cells dans la procédure !
If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _
"Greg" a écrit dans le message de groupe de discussion :
u$
le point A : fonctionne parfaitement.
le point B : effectivement sur ton fichier ça marche nickel, mais pas
pour
le mien (la feuille 1 ne se copie pas, ni l'entête) !!!!! je comprends
pas
c'est quasiment le même
voici mon exemple :
http://cjoint.com/?ltuXjBcNKX
merci
"michdenis" a écrit dans le message de
news:A) Si tu ne veux pas copier les formules en bas de tes feuilles
de données qui ont des formules qui renvoient "" , change dans
la procédure le paramètre "xlformulas" pour "xlvalues" dans la
méthode "Find" à 2 endroits.
B ) pour ce qui est du nombre de feuilles copiées, je n'ai aucun
problème avec ça.
http://cjoint.com/?ltuMUxEEAN
"Greg" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je viens d'essayer la macro sur une feuille test comportant 3 feuilles
+
1
recap (le fichier original est au bureau !!!)
Il me copie que la feuille2 et 3 mais pas la 1 !!!
Les lignes vides comportants des formules sont également copier.
pour ceux qui le souhaite, je peux envoyer ce fichier test.
Merci bcp
"michdenis" a écrit dans le message de
news:Bonjour Greg,
'---------------------------------------------
Sub test()
Dim ShDest As Worksheet, Sh As Worksheet
Dim DerLig As Long, DerCol As Integer
Dim Adr As String
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Recap").Delete
Application.DisplayAlerts = True
Set ShDest = Worksheets.Add
ShDest.Name = "Recap"
For Each Sh In Worksheets
If LCase(Sh.Name) <> LCase("recap") Then
a = a + 1
With Sh
With .Cells
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End With
If a = 1 Then
.Range("A1", Cells(DerLig, DerCol)).Copy _
ShDest.Range("A1")
Else
Adr = ShDest.Range("A" _
& ShDest.Range("A65536").End(xlUp)(2).Row).Address
.Range("A2", .Cells(DerLig, DerCol)).Copy _
ShDest.Range(Adr)
End If
End With
End If
Next
End Sub
'---------------------------------------------
"Greg" a écrit dans le message de groupe de discussion :
Bonsoir,
Voilà j'ai un classeur excel avec 5 feuilles (une feuille par
collaborateur).
Les feuilles sont identiques et contruites de la même manière :
en-tête
sur
A1:G1
Chaque personne complète son propre onglet. Le nombre de ligne peut
donc
être différent d'une feuille à l'autre.
Pour effectuer des stats j'ai besoin de compiler toutes les feuilles
en
une
seule.
La question est toute simple : comment à l'aide d'une macro je peux
copier
chaque feuille dans un onglet RECAP
Sachant que dans la colonne A il une formule dans chaque cellule
(jusqu'à
A400), il se peut donc que la macro recopie les lignes vides. si
possible
j'aimerais éviter.
Idéalement, à chaque execution la macro écrasera les anciennes données
copier dans l'onglet RECAP
Merci pour votre aide
(j'espère avoir été clair)