copier plusieurs feuille

Le
Greg
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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #20589881
Bonsoir.
Est-ce que la consolidation (Données, Consolider pour les versions
d'avant XL2007, ou Données, Outils de données, Consolider pour cette
dernière) ne te convient pas ?
Cordialement.
Daniel

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)


Greg
Le #20589871
Je ne pense pas.
Je veux tout simplement copier de manière automatique les 5 feuilles les
unes après les autres dans une autre (et unique) feuille.
merci

"Daniel.C" news:
Bonsoir.
Est-ce que la consolidation (Données, Consolider pour les versions d'avant
XL2007, ou Données, Outils de données, Consolider pour cette dernière) ne
te convient pas ?
Cordialement.
Daniel

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)







michdenis
Le #20589981
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"
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)
Greg
Le #20590081
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" 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"
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)



michdenis
Le #20590181
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" #

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" 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"
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)



Greg
Le #20590331
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" 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" #

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" 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"
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)






michdenis
Le #20590301
Il manque un "point "." devant le Cells dans la procédure !

If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _



"Greg" 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" 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" #

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" 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"
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)






Greg
Le #20590461
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" news:
Il manque un "point "." devant le Cells dans la procédure !

If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _



"Greg" 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" 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" #

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" 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"
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)









michdenis
Le #20590451
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"
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" news:
Il manque un "point "." devant le Cells dans la procédure !

If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _



"Greg" 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" 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" #

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" 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"
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)









Greg
Le #20590601
super. merci.

"michdenis" 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"
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" news:
Il manque un "point "." devant le Cells dans la procédure !

If a = 1 Then
.Range("A1", .Cells(DerLig, DerCol)).Copy _



"Greg" 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" 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" #

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" 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"
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)












Publicité
Poster une réponse
Anonyme