Copier une plage d'une feuille à une autre

Dadadidou

XLDnaute Nouveau
Bonsoir,

Je viens vers vous car j'ai un petit souci pour copier une plage de cellules d'une feuille "Feuil1" à une autre "Feuil2".
Au départ j'ai juste une feuille (Feuil1), sur laquelle il y a des données dont je veux copier mettons la colonne B (taille variable) sur "Feuil2" pour la traiter et obtenir un graphique.

J'ai écrit le code suivant :
Code:
Sub Transfert()
'
' Transfert Macro
 
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Feuil2"
Sheets("Feuil2").Move After:=Sheets("Feuil1")
 
Worksheets("Feuil1").Range("B1", [B30000].End(xlUp)).Copy Sheets("Feuil2").Range("A1")
 
End Sub

Mais quand j'exécute, j'ai la dernière ligne en jaune avec le message "Erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet"
Je ne comprends pas d'où cela provient, une idée ? Je sèche, j'ai essayé plusieurs syntaxe, mais toujours la même erreur ... :confused:

Encore merci d'avance :)
 

Papou-net

XLDnaute Barbatruc
Re : Copier une plage d'une feuille à une autre

Bonjour Dadadidou,

En modifiant ton code comme ceci :

Code:
Sub Transfert()
'
' Transfert Macro
 
ActiveWorkbook.Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Feuil2"
 
With Worksheets("Feuil1")
  .Range("B1", .Range("B30000").End(xlUp)).Copy ActiveSheet.Range("A1")
End With
 
End Sub

Tu devrais obtenir satisfaction.

Cordialement.
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Copier une plage d'une feuille à une autre

Bonjour, Dadadidou, le Forum,

Si l'onglet "Feuil2" est déjà présent dans le fichier, alors que sa création est sollicitée, cela génère une erreur. L'erreur 1004 en est peut-être la traduction :confused:.

Une suggestion :

Code:
Option Explicit

Sub Transfert()
Application.DisplayAlerts = False
On Error Resume Next
Sheets("Feuil2").Delete
ActiveWorkbook.Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Feuil2"
Sheets("Feuil1").Select
Range("B1", [B30000].End(xlUp)).Copy Sheets("Feuil2").Range("A1")
Application.DisplayAlerts = True
End Sub

A bientôt :)

Bonjour, Papou-net
 

Dadadidou

XLDnaute Nouveau
Re : Copier une plage d'une feuille à une autre

Bonsoir,

Merci de vos réponses ! Vos codes sont très bien, mais j'avais la même erreur :(
J'ai repéré d'où provient l'erreur et je l'ai résolue de manière bizarre. Cela provient de "[B30000].End(xlUp)".
En effet, si j'écris :
Code:
Sub Transfert()
'
' Transfert Macro
Dim k As Long

k = Range("A1", [A6000].End(xlUp)).Count

ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Feuil2"
Sheets("Feuil2").Move After:=Sheets("Feuil1")
 
Worksheets("Feuil1").Range("B1:B" & k).Copy Sheets("Feuil2").Range("A1")

End Sub
Ca marche !
Je ne comprends pas pourquoi ça fonctionne en passant par une variable qui récupère le nombre de ligne, j'utilise End(xlUp) dans toutes mes macros sans que ça pose problème.
Si vous avez une idée, je suis perplexe :confused:

Merci à vous !
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Copier une plage d'une feuille à une autre

RE Dadadidou,

L'erreur vient du fait que dans ta référence de plage, tu démarres avec la cellule B1 de Feuil1 et que tu termines sur la dernière cellule de Feuil2, que tu as activée entretemps.

C'est pour cette raison que j'ai écrit :
Code:
With Sheets("Feuil1")
et que j'ai fait précéder les références de cellules par un point : .
Code:
Range("B1"), .Range("B3000")
.
Je suis surpris que ça ne fonctionne pas chez toi alors que j'ai fait l'essai chez moi et que je n'ai pas obtenu d'erreur.

Et tu pourrais d'ailleurs tout aussi bien écrire ton code initial comme ceci :

Code:
Range(Sheets("Feuil1").Range("B1"), Sheets("Feuil1").Range("B30000").End(xlUp)).Copy Sheets("Feuil2").Range("A1")

Là encore j'ai fait l'essai, pas de problème : la copie se fait bien.

Je te joins une copie pour vérifier. Tu constateras également que tu peux créer directement Feuil2 à la fin, sans être obligé de déplacer l'onglet.

Espérant avoir levé ton interrogation.

Cordialement.

PS : bonsoir DoubleZero
 

Pièces jointes

  • Dadadidou.xlsm
    13.3 KB · Affichages: 77

Dadadidou

XLDnaute Nouveau
Re : Copier une plage d'une feuille à une autre

Bonsoir Papou !

Merci de ta réponse, et désolé du retard de la mienne !
J'ai continué à avancer dans ma macro en utilisant des variables qui récupèrent le nombre de ligne de ma sélection, mais je vais me pencher sur tes suggestions, parce que je n'aime pas avoir trop de variables, surtout si elles sont superflues !

Je te tiens au courant ;)

Encore merci !
 

Discussions similaires

Statistiques des forums

Discussions
311 737
Messages
2 082 036
Membres
101 878
dernier inscrit
1475214