J'ai un petit pb, je souhaiterai selectionnerune suite de cellules dans une colonne pour la copier ailleurs, or je souhaite le faire avec l'objet cells et non range, mais je n'y arrive pas.
je m'explique je veus par exemple faire l'équivalent de cà :
Range("C2:C41").Select
mais avec l'objet cells puisque la plage de cellule est variable et est calculée en amont dans le programme.
J'ai donc essayer le code suisvant qui bien sure ne marche pas :
' copier-coller de toute la feuille par exemple
' Source:
Sheets("Feuille1").Select
Cells().Select
Selection.Copy
' Destination:
Sheets("Feuille2").Select
Cells().PasteSpecial (xlPasteAll)
Maintenant, à la place de Cells() (ou Cell()) pour une sélection mois large ou plus précise, tu peux indiquer :
- soit Range(Cells(1,1), Cells(x,y), etc.)
- soit Range("A1:" & Range("A65535").End(xlUp).Row) en admettant que tu veuilles sélectionner toutes les valeurs de la colonne A, p. ex.
Il est effectivement préférable d'utiliser Cells() à Range() mais parfois il faut revenir à l'ancienne méthode.
Ensuite, les différentes réponses ont négligé un aspect très (trop) simple dans ton cas : les boucles!
Cells() ne s'utilise pas exactement comme Range(), d'où le fait que les méthodes ne marchent pas (toujours).
Cells() = cellule précise (en général)
Range() = plage de données, de cellules, etc.
En gros, Cells() = Range("A1:" & Range("A65535").End(xlDown).Column)
Et Cells(1,1) = Range("A1")
Or Range("nom d'une plage de données") n'a, si je me rappelle bien, pas d'équivalent avec Cells().
Donc pour faire la sélection de ta plage en utilisant le sélecteur Cells() et .Select, je ferais plutôt :
Sheets("Feuille1").Select
Dim i As Integer/Long
For i = 1 to ligne_calc
Cells(1, & i).Copy
Next i
Puis tu choisis ta destination et tu fais un .PasteSpecial(xlPasteAll)
Sheets("Feuille2").Select
Cells().PasteSpecial (xlPasteAll)