Problème de syntaxe Range.Value2

Bonjour à tous,

J'ai aujourd'hui commencé l'optimisation d'une macro qui fonctionne : je veux remplacer l'étape intermédiaire de copier dans le presse-papier avant de coller, à l'aide de la syntaxe suivante (je vous épargne la boucle, mais voici l'aperçu de l'opération pour une ligne)

Worksheets(1).Range(Cells(54, 1), Cells(54, 22)).Value2 = Worksheets(2).Range(Cells(1243, 1), Cells(1243, 22)).Value2

Cette ligne pose problème dans la macro principale, je l'ai donc testé toute seule et j'obtiens alors une erreur '1004'. Je précise que j'ai bien 2 feuilles existantes

Je dois faire une erreur de syntaxe mais je ne comprends pas où.

Merci de votre aide

Bonjour,

Le problème vient du fait que les cellules "Cells" ne sont pas qualifiées et font donc référence à la feuille active. Mets :

Dim WS1 As Workbook, WS2 As Worksheet
Set WS1 = Worksheets(1)
Set WS2 = Worksheets(2)
WS1.Range(WS1.Cells(54, 1), WS1.Cells(54, 22)).Value2 = _
  WS2.Range(WS2.Cells(1243, 1), WS2.Cells(1243, 22)).Value2

Daniel

Merci Daniel,

effectivement il me manquait cette précision pour Cells, qui m'était sortie de la tête !

Un grand merci et bonne journée :)

Bonjour Madben, DanielC, le forum,

Autre syntaxe possible ..

Sheets(1).Cells(54, 1).Resize(1, 22).Value2 = Sheets(2).Cells(1243, 1).Resize(1, 22).Value2

Cordialement,

Merci xorsankuai pour ce partage

Rechercher des sujets similaires à "probleme syntaxe range value2"