OVH Cloud OVH Cloud

Copier des onglets

3 réponses
Avatar
François
Bonjour,
Mon classeur comporte 4 feuilles dont une se nomme test.
J'aimerais copier les feuilles qui ne sont pas test dans test.
Les feuilles ayant la même structure, en mettant les enregistrements
les uns à la suite des autres. J'ai essayé avec le code ci-dessous, qui me
renvoie
une erreur que je ne comprends pas:

Sub travail()

Dim feuille As Object, nombre As Long
Dim i As Long

nombre = ActiveWorkbook.Sheets.Count

For i = 1 To nombre
If Sheets(i).Name <> "test" Then
Sheets(i).Range("B1").CurrentRegion.Copy
Sheets("test").Range("A1").End(xlDown).Offset(1, 0).Paste

End If
Next
End Sub

3 réponses

Avatar
SL
Bonjour
regarde l'aide sur paste :
********expression.Paste(Destination, Link)

expression Obligatoire. Expression qui renvoie un objet Worksheet.

Destination Argument de type Variant facultatif. Objet Range qui
spécifie l'endroit où le contenu du Presse-papiers doit être placé. Si vous
ne spécifiez pas cet argument, la méthode utilise la sélection en cours.

Expression est un objet Workshett (ce qui n'est pas le cas avec ton code)

"François" a écrit dans le message de
news:
Bonjour,
Mon classeur comporte 4 feuilles dont une se nomme test.
J'aimerais copier les feuilles qui ne sont pas test dans test.
Les feuilles ayant la même structure, en mettant les enregistrements
les uns à la suite des autres. J'ai essayé avec le code ci-dessous, qui me
renvoie
une erreur que je ne comprends pas:

Sub travail()

Dim feuille As Object, nombre As Long
Dim i As Long

nombre = ActiveWorkbook.Sheets.Count

For i = 1 To nombre
If Sheets(i).Name <> "test" Then
Sheets(i).Range("B1").CurrentRegion.Copy
Sheets("test").Range("A1").End(xlDown).Offset(1, 0).Paste

End If
Next
End Sub




Avatar
SL
Re-bonjour
j'ai appuyé par mégarde sur CTRL ENTREE, donc dans OE, le post est parti !

je fini :
avant le paste : objet Worksheet.
2e problème
si la feuille test est vide, Range("A1").End(xlDown).Offset(1, 0) renverra
l'avant derniere cellule en ligne 65535 !
Il vaut mieux partir du bas : Range("A65536").End(xlUp)...

Stéphane

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

Bonjour
regarde l'aide sur paste :
********expression.Paste(Destination, Link)

expression Obligatoire. Expression qui renvoie un objet Worksheet.

Destination Argument de type Variant facultatif. Objet Range qui
spécifie l'endroit où le contenu du Presse-papiers doit être placé. Si
vous ne spécifiez pas cet argument, la méthode utilise la sélection en
cours.

Expression est un objet Workshett (ce qui n'est pas le cas avec ton code)

"François" a écrit dans le message de
news:
Bonjour,
Mon classeur comporte 4 feuilles dont une se nomme test.
J'aimerais copier les feuilles qui ne sont pas test dans test.
Les feuilles ayant la même structure, en mettant les enregistrements
les uns à la suite des autres. J'ai essayé avec le code ci-dessous, qui
me
renvoie
une erreur que je ne comprends pas:

Sub travail()

Dim feuille As Object, nombre As Long
Dim i As Long

nombre = ActiveWorkbook.Sheets.Count

For i = 1 To nombre
If Sheets(i).Name <> "test" Then
Sheets(i).Range("B1").CurrentRegion.Copy
Sheets("test").Range("A1").End(xlDown).Offset(1, 0).Paste

End If
Next
End Sub








Avatar
François
Merci beaucoup!

Tu as vu juste! J'ai pu mettre ainsi ma macro que je republie!
Je n'ai pas l'impression d'avoir fait simple, mais cela fonctionnne!

Sub travail()

Dim addresse As String, nombre As Long
Dim i As Long

nombre = ActiveWorkbook.Sheets.Count

For i = 1 To nombre
If Sheets(i).Name <> "test" Then
addresse = Range("A65536").End(xlUp).AddressLocal
Sheets(i).Range("B1").CurrentRegion.Copy
Worksheets("test").Range("A65536").End(xlUp).Select
ActiveSheet.Paste Destination:=Worksheets("test").Range(addresse)

End If
Next




End Sub

François.


Re-bonjour
j'ai appuyé par mégarde sur CTRL ENTREE, donc dans OE, le post est parti !

je fini :
avant le paste : objet Worksheet.
2e problème
si la feuille test est vide, Range("A1").End(xlDown).Offset(1, 0) renverra
l'avant derniere cellule en ligne 65535 !
Il vaut mieux partir du bas : Range("A65536").End(xlUp)...

Stéphane

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

Bonjour
regarde l'aide sur paste :
********expression.Paste(Destination, Link)

expression Obligatoire. Expression qui renvoie un objet Worksheet.

Destination Argument de type Variant facultatif. Objet Range qui
spécifie l'endroit où le contenu du Presse-papiers doit être placé. Si
vous ne spécifiez pas cet argument, la méthode utilise la sélection en
cours.

Expression est un objet Workshett (ce qui n'est pas le cas avec ton code)

"François" a écrit dans le message de
news:
Bonjour,
Mon classeur comporte 4 feuilles dont une se nomme test.
J'aimerais copier les feuilles qui ne sont pas test dans test.
Les feuilles ayant la même structure, en mettant les enregistrements
les uns à la suite des autres. J'ai essayé avec le code ci-dessous, qui
me
renvoie
une erreur que je ne comprends pas:

Sub travail()

Dim feuille As Object, nombre As Long
Dim i As Long

nombre = ActiveWorkbook.Sheets.Count

For i = 1 To nombre
If Sheets(i).Name <> "test" Then
Sheets(i).Range("B1").CurrentRegion.Copy
Sheets("test").Range("A1").End(xlDown).Offset(1, 0).Paste

End If
Next
End Sub