Selection d eplusieurs cellules avec cells

Résolu
olivier857
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008
- 30 nov. 2006 à 13:42
neo2k2
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
- 5 nov. 2007 à 16:14
Bonjour,

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 :

   Cells("2, 3 : " & ligne_calc & ", 3").Select

Avez vous une idée.

Merci d'avance !

oliv

10 réponses

cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
30 nov. 2006 à 14:00
Autre possibilité, cette fois-ci avec Cells et Range :

Range(Cells(2, 3), Cells(ligne_calc, 3)).Select

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
drikce06
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
30 nov. 2006 à 15:03
Salut: Utilise cet méthode:
Worksheets("Feuil1").Range("C1:C5").Copy
ActiveSheet.Paste Destination:=Worksheets("Feuil1").Range("D1:D5")




 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
30 nov. 2006 à 13:55
Ou Range("C2:C" & ligne_calc).Select , ça devrait marcher.

Mais bon , ça répond pas à ta question puisque tu veux le faire avec Cells

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
30 nov. 2006 à 13:59
Salut,
HEu Cells.RAnge("C2:C42").Select ????

@+: Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olivier857
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

30 nov. 2006 à 14:15
Alors résumons les différentes réponse :

1 : Range("C2:C" & ligne_calc).Select

Ca ne marche pas, mais ca aurait pu répondre à ma question.

2: Cells.RAnge("C2:C42").Select

Merci, mais non, car c'est du statique. Le 42 doit être dynamique, d'ou la proposition 1 mais qui plante.

3 : Range(Cells(2, 3), Cells(ligne_calc, 3)).Select

Ca correspond très bien a ce dont je voulais et ca marche --> Merci
0
olivier857
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

30 nov. 2006 à 14:49
Ok donc maintenant que j'arrive a selectionner mes cellules et à les copier, j'ai du mal à les coller.

Mon code plante :

    Sheets("Recap").Select
    Range(Cells(2, 3), Cells(ligne_recap_deb - 2, 3)).Copy
    Sheets("Feuille de calcul").Select
    Cells(8, 3).Select   'ou aussi : Range(Cells(8, 3), Cells(ligne_recap_deb - 4, 3)).Copy 
    Selection.Paste    ' Ici ca plante, il n'arrive pas à coller

Une idée ? Qu'est ce qui fait planter mon code.
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
30 nov. 2006 à 14:56
Re,
Essaie
ActiveSheet.Cells(8, 3).Select   'ou aussi : Range(Cells(8, 3), Cells(ligne_recap_deb - 4, 3)).Copy
Selection.Paste 

@+: Ju£i?n
Pensez: Réponse acceptée
0
olivier857
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

30 nov. 2006 à 15:43
Alors ca y est ca marche avec la  2ème réponse.

Je résume encore une fois :

1 :  ActiveSheet.Cells(8, 3).Select
      Selection.Paste 

Cette solution plante également mais je vois pas pourquoi

2 : Worksheets("Feuil1").Range("C1:C5").Copy
ActiveSheet.Paste Destination:=Worksheets("Feuil1").Range("D1:D5")

Cette solution marche très bien, Merci encore une fois.
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
1 déc. 2006 à 00:05
Peut-être comme ça ?
Activesheet.Cells(8,3).Select
Selection.PasteSpecial

à PasteSpecial, tu peux y ajouter
xlPasteValues (coller la valeur)
xlPasteFormats (coller le format)
xlPasteFormulas (seulement les formules)
....

MPi
0
neo2k2
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
3
5 nov. 2007 à 16:14
Je crois que vous vous compliquez la tâche...

' 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)


 
0