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

Macro copier-coller

3 réponses
Avatar
Leonweb73
Salut, j'ai besoin de faire des copier-coller de tableaux sous Excel.
J'ai un nombre x de feuille nommées toto1, toto2... sur chaques feuilles
figure un tableau avec les noms de champs sur la premiere ligne. Ensuite la
longueur des tableau varie en fonction des feuilles (59 lignes, 235
lignes...).
Pour retrailler tout cela j'ai besoin de regrouper l'ensemble des données
réparties sur toutes les feuilles sur un seul tableau situé sur une feuille.
MA méthode pour l'instant est la suivante. Je crée une macro qui fait un
copier-coller du tableau de la premiere feuille et la colle sur la "feuil1".
Le probleme et que je suis obligé de prendre large pour être sur de ne pas
oublié des enregistrements donc le résultat final est un tableau récap avec
des ligne vides. Obligation de les supprimer manuellement pour pouvoir les
triées ensuite ! De plus je suis obliger de faire un copier coller de la
macro en x exemplaire ( en fonction du nombre de feuille) pour recommencer
l'opération. Et changer à la mains la valeur de la cellule où le copier
coller doit se faire...

AU SECOURS. Si quelqu'un comprends mon explication et peux me donner un bout
de code ou macro pour faire le maximum en auto.

Sheets("motte1").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("motte2").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A46").Select
ActiveSheet.Paste


--
(¯`·._--={ L E O N W E B 7 3 }=--_.·`¯)

**********************************************
MOUNTAIN BIKING IS NOT A CRIME
**********************************************

3 réponses

Avatar
Lydya
Bonjour,

Voici une macro qui:
->efface les données de la feuille 1 (que je suppose être la feuille
récapitulative)
->copie la ligne 7 (que je suppose être les entêtes de colonnes) de la
feuille 2 sur la feuille 1
->copie la plage des données des feuilles 2 au nombre total de feuilles du
classeur sur la première feuille
->la plage copiée commence à partir de la ligne 8 jusqu'à la dernière ligne
contenant des données (colonnes A à F).
--
Sub CopieFeuilles()
Dim l As Long
Dim f As Integer
Dim Plage As Range
Dim Lignes As Long
Sheets(1).Cells.Clear
Sheets(2).Range("A7:F7").Copy _
Destination:=Sheets(1).Range("A1")
l = 2
For f = 2 To Sheets.Count
If Application.CountA(Sheets(f).Range("A8"). _
CurrentRegion) <> 0 Then
With Sheets(f)
Lignes = .Range("A:A").Find("*", , , , , xlPrevious).Row
Set Plage = .Range(.Cells(8, "A"), .Cells(Lignes, "F"))
End With
Plage.Copy Destination:=Sheets(1).Cells(l, "A")
l = Sheet(1).Range("A:A").Find("*", , , , , xlPrevious).Row + 1
End If
Next f
End Sub
--

Lydya



"Leonweb73" a écrit dans le message de
news:bnaj20$fs0$
Salut, j'ai besoin de faire des copier-coller de tableaux sous Excel.
J'ai un nombre x de feuille nommées toto1, toto2... sur chaques feuilles
figure un tableau avec les noms de champs sur la premiere ligne. Ensuite
la

longueur des tableau varie en fonction des feuilles (59 lignes, 235
lignes...).
Pour retrailler tout cela j'ai besoin de regrouper l'ensemble des données
réparties sur toutes les feuilles sur un seul tableau situé sur une
feuille.

MA méthode pour l'instant est la suivante. Je crée une macro qui fait un
copier-coller du tableau de la premiere feuille et la colle sur la
"feuil1".

Le probleme et que je suis obligé de prendre large pour être sur de ne pas
oublié des enregistrements donc le résultat final est un tableau récap
avec

des ligne vides. Obligation de les supprimer manuellement pour pouvoir les
triées ensuite ! De plus je suis obliger de faire un copier coller de la
macro en x exemplaire ( en fonction du nombre de feuille) pour recommencer
l'opération. Et changer à la mains la valeur de la cellule où le copier
coller doit se faire...

AU SECOURS. Si quelqu'un comprends mon explication et peux me donner un
bout

de code ou macro pour faire le maximum en auto.

Sheets("motte1").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("motte2").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A46").Select
ActiveSheet.Paste


--
(¯`·._--={ L E O N W E B 7 3 }=--_.·`¯)

**********************************************
MOUNTAIN BIKING IS NOT A CRIME
**********************************************




Avatar
Frédéric Sigonneau
Bonjour,

Essaye cette macro, à recopier dans un module standard de ton classeur et à
affecter à un bouton de barre d'outils (elle suppose qu'aucune ligne sur une
autre colonne que A dans tes feuilles ne contient de données après la dernière
cellule occupée en colonne A) :

Sub RecopieTout()
Dim Li&, Derli&, LiCopie&

Application.ScreenUpdating = False
Sheets.Add(before:=Sheets(1)).Name = "Recap"
'recopie de la ligne d'en-têtes
Sheets("Recap").Rows("1:1").Value = Sheets(2).Rows("1:1").Value

For i = 2 To Sheets.Count
With Sheets(i)
.Activate
Derli = .Cells(Rows.Count, "A").End(xlUp).Row
.Rows("2:" & Derli).Copy
End With
With Sheets("Recap")
.Select
LiCopie = .Cells(Rows.Count, "A").End(xlUp).Row + 1
.Range("A" & LiCopie).Select
.Paste
End With
Next i
Application.CutCopyMode = False
Range("A1").Select
End Sub

ou, sans recopie des éventuelles mises en forme des données :

Sub RecopieDonnees()
Dim DerLi&, LiCopie&, DerLiCopie&

Sheets.Add(before:=Sheets(1)).Name = "Recap"
'recopie de la ligne d'en-têtes
Sheets("Recap").Rows("1:1").Value = Sheets(2).Rows("1:1").Value
'recopie du contenu de chaque feuille
For i = 2 To Sheets.Count
DerLi = Sheets(i).Cells(Rows.Count, "A").End(xlUp).Row
LiCopie = Sheets("Recap").Cells(Rows.Count, "A").End(xlUp).Row + 1
DerLiCopie = LiCopie + DerLi - 2
Sheets("Recap").Rows(LiCopie & ":" & DerLiCopie).Value = _
Sheets(i).Rows("2:" & DerLi).Value
Next i
Range("A1").Select
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Salut, j'ai besoin de faire des copier-coller de tableaux sous Excel.
J'ai un nombre x de feuille nommées toto1, toto2... sur chaques feuilles
figure un tableau avec les noms de champs sur la premiere ligne. Ensuite la
longueur des tableau varie en fonction des feuilles (59 lignes, 235
lignes...).
Pour retrailler tout cela j'ai besoin de regrouper l'ensemble des données
réparties sur toutes les feuilles sur un seul tableau situé sur une feuille.
MA méthode pour l'instant est la suivante. Je crée une macro qui fait un
copier-coller du tableau de la premiere feuille et la colle sur la "feuil1".
Le probleme et que je suis obligé de prendre large pour être sur de ne pas
oublié des enregistrements donc le résultat final est un tableau récap avec
des ligne vides. Obligation de les supprimer manuellement pour pouvoir les
triées ensuite ! De plus je suis obliger de faire un copier coller de la
macro en x exemplaire ( en fonction du nombre de feuille) pour recommencer
l'opération. Et changer à la mains la valeur de la cellule où le copier
coller doit se faire...

AU SECOURS. Si quelqu'un comprends mon explication et peux me donner un bout
de code ou macro pour faire le maximum en auto.

Sheets("motte1").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("motte2").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A46").Select
ActiveSheet.Paste

--
(¯`·._--={ L E O N W E B 7 3 }=--_.·`¯)

**********************************************
MOUNTAIN BIKING IS NOT A CRIME
**********************************************


Avatar
Leonweb73
Merci beaucoup à tous !

--
(¯`·._--={ L E O N W E B 7 3 }=--_.·`¯)

**********************************************
MOUNTAIN BIKING IS NOT A CRIME
**********************************************
"Lydya" a écrit dans le message de
news:
Bonjour,

Voici une macro qui:
->efface les données de la feuille 1 (que je suppose être la feuille
récapitulative)
->copie la ligne 7 (que je suppose être les entêtes de colonnes) de la
feuille 2 sur la feuille 1
->copie la plage des données des feuilles 2 au nombre total de feuilles du
classeur sur la première feuille
->la plage copiée commence à partir de la ligne 8 jusqu'à la dernière
ligne

contenant des données (colonnes A à F).
--
Sub CopieFeuilles()
Dim l As Long
Dim f As Integer
Dim Plage As Range
Dim Lignes As Long
Sheets(1).Cells.Clear
Sheets(2).Range("A7:F7").Copy _
Destination:=Sheets(1).Range("A1")
l = 2
For f = 2 To Sheets.Count
If Application.CountA(Sheets(f).Range("A8"). _
CurrentRegion) <> 0 Then
With Sheets(f)
Lignes = .Range("A:A").Find("*", , , , , xlPrevious).Row
Set Plage = .Range(.Cells(8, "A"), .Cells(Lignes, "F"))
End With
Plage.Copy Destination:=Sheets(1).Cells(l, "A")
l = Sheet(1).Range("A:A").Find("*", , , , , xlPrevious).Row + 1
End If
Next f
End Sub
--

Lydya



"Leonweb73" a écrit dans le message de
news:bnaj20$fs0$
Salut, j'ai besoin de faire des copier-coller de tableaux sous Excel.
J'ai un nombre x de feuille nommées toto1, toto2... sur chaques feuilles
figure un tableau avec les noms de champs sur la premiere ligne. Ensuite
la

longueur des tableau varie en fonction des feuilles (59 lignes, 235
lignes...).
Pour retrailler tout cela j'ai besoin de regrouper l'ensemble des
données


réparties sur toutes les feuilles sur un seul tableau situé sur une
feuille.

MA méthode pour l'instant est la suivante. Je crée une macro qui fait un
copier-coller du tableau de la premiere feuille et la colle sur la
"feuil1".

Le probleme et que je suis obligé de prendre large pour être sur de ne
pas


oublié des enregistrements donc le résultat final est un tableau récap
avec

des ligne vides. Obligation de les supprimer manuellement pour pouvoir
les


triées ensuite ! De plus je suis obliger de faire un copier coller de la
macro en x exemplaire ( en fonction du nombre de feuille) pour
recommencer


l'opération. Et changer à la mains la valeur de la cellule où le copier
coller doit se faire...

AU SECOURS. Si quelqu'un comprends mon explication et peux me donner un
bout

de code ou macro pour faire le maximum en auto.

Sheets("motte1").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("motte2").Select
Range("A8:F52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("A46").Select
ActiveSheet.Paste


--
(¯`·._--={ L E O N W E B 7 3 }=--_.·`¯)

**********************************************
MOUNTAIN BIKING IS NOT A CRIME
**********************************************