Copie d'un Range de cellules dans une feuille nouvellement créée

oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 26 févr. 2010 à 11:42
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 26 févr. 2010 à 14:02
Bonjour,

Depuis plusieurs jours, j'essaie désespéremment de copier un Range de cellules provenant d'une feuille existante vers une autre feuille que je crée pour l'occasion et à laquelle j'affecte un nom.
VBA me sort que la "méthode Range de l'objet Worksheet a échoué", ou même parfois "Objet requis".

Ici je déclare mes deux nouvelles Worksheet en public :

Public facturesOK, facturesKO As Excel.Worksheet

J'affecte un template et un nom aux deux feuilles de destination :

'Génération des 2 feuilles de Contrôle facture (OK/KO)
Set facturesOK = Sheets.Add(After:=Sheets(3), Type:=templatesPath + "\FacturesTemplateOK.xlt")
facturesOK.Name = "Factures OK " + Replace(CStr(Date), "/", ".")
Set facturesKO = Sheets.Add(After:=Sheets(4), Type:=templatesPath + "\FacturesTemplateKO.xlt")
facturesKO.Name = "Factures KO " + Replace(CStr(Date), "/", ".")

puis je boucle sur les lignes de la première feuille afin de dispatcher celles-ci sur les deux autres :

Select Case Main.RemplirChamps
Case True
'Contrôle OK pour la facture courante : copie dans la feuille de rapport
Worksheets("Scan").Range("A" + CStr(i) + ":S" + CStr(i)).Copy facturesOK.Range("A" + CStr(facturesOKIndex) + ":S" + CStr(facturesOKIndex))
facturesOKIndex = facturesOKIndex + 1
Case False
'Contrôle KO pour la facture courante : copie dans la feuille de rapport
Worksheets("Scan").Range("A" + CStr(i) + ":S" + CStr(i)).Copy facturesKO.Range("A" + CStr(facturesKOIndex) + ":S" + CStr(facturesKOIndex))
facturesKOIndex = facturesKOIndex + 1
End Select

Et c'est là où je ne comprend plus : la copie semble marcher dans le case "true", par contre, elle semble bloquer sur la référence de la worksheet "facturesKO". On dirait seulement qu'il ne comprend pas à quelle feuille je fais référence.
Ce qui est surprenant, c'est que je peux modifier des cellules de cette feuille sans problème...

Votre aide est la bienvenue !

Merci d'avance

Etienne

2 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 févr. 2010 à 12:09
Salut
Peut-être que ça se passe au niveau de la déclaration :

Public facturesOK, facturesKO As Excel.Worksheet
ne signifie pas que chaque objet sera dimensionné comme une WorkSheet.
Seule facturesKO sera une WorkSheet.
facturesOK sera de type Variant.

D'autre part, comme tu es déjà sous Excel, inutile de répéter la référence à Excel

La syntaxe correcte est donc :
Public facturesOK As Worksheet, facturesKO As Worksheet


Vois si cela corrige ton problème et tiens nous au courant.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
26 févr. 2010 à 14:02
salut jack et merci de ta prompte réponse.

J'ai trouvé le vrai problème : c'était le Next de la boucle qui était placé n'importe où... Pfff et dire que je me concentrais bêtement sur la ligne incriminée...

Merci quand même en tous cas.

Bonne journée,

Etienne
0