OVH Cloud OVH Cloud

Copier-coller une plage unique de plusieurs onglet vers une feuille unique

5 réponses
Avatar
omeunier
Bonjour,

Après plusieurs recherches internet je ne trouve pas de solution à mon problème.

Voici la situation:
J'ai un fichier excel qui contient plusieurs onglets (crées par macro à partir d'une liste qui se trouve dans l'onglet "sommaire" plage B4:Bx -x signifiant la dernière ligne non vide)

Je souhaite (par macro) copier les valeurs(pas les formules) la plage AJ14:AO37 de chaque onglet de la liste pour coller les plages les unes à la suite des autres dans l'onglet "récapitulatif" puis supprimer les lignes vides.

Merci de vos réponses !

5 réponses

Avatar
isabelle
bonjour,

Sub Macro1()
Dim x As Integer, c
x = Sheets("sommaire").Cells(.Rows.Count, 2).End(xlUp).Row
For Each c In Sheets("sommaire").Range("B4:B" & x)
lgn = lng + 1
Sheets("récapitulatif").Range("A1:F" & lgn) = Sheets(c).Range("AJ14:AO37")
Next
End Sub

puis supprimer les lignes vides


elle sont ou ces lignes vides ?

isabelle

Le 2015-05-20 07:38, omeunier a écrit :
Bonjour,

Après plusieurs recherches internet je ne trouve pas de solution à mon
problème.

Voici la situation:
J'ai un fichier excel qui contient plusieurs onglets (crées par macro à partir
d'une liste qui se trouve dans l'onglet "sommaire" plage B4:Bx -x signifiant la
dernière ligne non vide)

Je souhaite (par macro) copier les valeurs(pas les formules) la plage AJ14:AO37
de chaque onglet de la liste pour coller les plages les unes à la suite des
autres dans l'onglet "récapitulatif" puis supprimer les lignes vides.

Merci de vos réponses !

Avatar
Jacky
Bonjour,
Je souhaite (par macro) copier les valeurs(pas les formules) la plage AJ14:AO37
de chaque onglet



Ceci peut être
'------------------------
Sub Recap()
Dim derlg As Long, i As Long
Sheets("récapitulatif").Cells.Clear
Application.ScreenUpdating = False
With Sheets("sommaire") '.Range("B4:B" & Cells(Rows.Count, 2).End(xlUp).Row).Address
For i = 4 To .Cells(.Rows.Count, 2).End(xlUp).Row
Sheets(.Cells(i, 2).Value).Range("AJ14:AO37").Copy
With Sheets("récapitulatif")
derlg = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Range("a" & derlg).PasteSpecial Paste:=xlPasteValues
End With
Next
End With
Sheets("récapitulatif").Activate
Application.ScreenUpdating = True
End Sub
'---------------------------
Voir ici
http://cjoint.com/?EEuqVo3qoOg
--
Salutations
JJ


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

Bonjour,

Après plusieurs recherches internet je ne trouve pas de solution à mon
problème.

Voici la situation:
J'ai un fichier excel qui contient plusieurs onglets (crées par macro à partir
d'une liste qui se trouve dans l'onglet "sommaire" plage B4:Bx -x signifiant la
dernière ligne non vide)



de la liste pour coller les plages les unes à la suite des
autres dans l'onglet "récapitulatif" puis supprimer les lignes vides.

Merci de vos réponses !
Avatar
isabelle
correction:

Sub Macro1()
Dim x As Integer, n1 As Integer, n2 As Integer, c
Sheets("récapitulatif").ClearContents
With Sheets("sommaire")
x = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
For Each c In Sheets("sommaire").Range("B4:B" & x)
n1 = n2 + 1
n2 = n1 + 23
Sheets("récapitulatif").Range("A" & n1 & ":F" & n2).Value =
Sheets(c.Value).Range("AJ14:AO37").Value
Next
End Sub

isabelle

Le 2015-05-20 07:38, omeunier a écrit :
Bonjour,

Après plusieurs recherches internet je ne trouve pas de solution à mon
problème.

Voici la situation:
J'ai un fichier excel qui contient plusieurs onglets (crées par macro à partir
d'une liste qui se trouve dans l'onglet "sommaire" plage B4:Bx -x signifiant la
dernière ligne non vide)

Je souhaite (par macro) copier les valeurs(pas les formules) la plage AJ14:AO37
de chaque onglet de la liste pour coller les plages les unes à la suite des
autres dans l'onglet "récapitulatif" puis supprimer les lignes vides.

Merci de vos réponses !

Avatar
isabelle
jamais 2 sans 3

il faut remplacer
Sheets("récapitulatif").ClearContents
par
Sheets("récapitulatif").Cells.ClearContents

isabelle

Le 2015-05-20 11:34, isabelle a écrit :
correction:

Sub Macro1()
Dim x As Integer, n1 As Integer, n2 As Integer, c
Sheets("récapitulatif").ClearContents
With Sheets("sommaire")
x = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
For Each c In Sheets("sommaire").Range("B4:B" & x)
n1 = n2 + 1
n2 = n1 + 23
Sheets("récapitulatif").Range("A" & n1 & ":F" & n2).Value > Sheets(c.Value).Range("AJ14:AO37").Value
Next
End Sub

isabelle

Le 2015-05-20 07:38, omeunier a écrit :
Bonjour,

Après plusieurs recherches internet je ne trouve pas de solution à mon
problème.

Voici la situation:
J'ai un fichier excel qui contient plusieurs onglets (crées par macro à partir
d'une liste qui se trouve dans l'onglet "sommaire" plage B4:Bx -x signifiant la
dernière ligne non vide)

Je souhaite (par macro) copier les valeurs(pas les formules) la plage AJ14:AO37
de chaque onglet de la liste pour coller les plages les unes à la suite des
autres dans l'onglet "récapitulatif" puis supprimer les lignes vides.

Merci de vos réponses !

Avatar
isabelle
si tu as besoin de connaitre le nom de l'onglet d’où proviennent les données,

Sub Macro1()
Dim x As Integer, n1 As Integer, n2 As Integer, c
Sheets("récapitulatif").Cells.ClearContents
With Sheets("sommaire")
x = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
For Each c In Sheets("sommaire").Range("B4:B" & x)
n1 = n2 + 1
n2 = n1 + 23
Sheets("récapitulatif").Range("A" & n1) = c.Value
Sheets("récapitulatif").Range("B" & n1 & ":G" & n2).Value =
Sheets(c.Value).Range("AJ14:AO37").Value
Next
End Sub

isabelle