Determiner une plage de cellule avec variable

Fermé
Goosdaye Messages postés 2 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 29 mars 2011 - 29 mars 2011 à 16:04
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 29 mars 2011 à 16:35
Bonjour,

Je souhaiterais déterminer avec des variables une plage de cellule (12col sur 3lignes) afin de la copier.
le point de départ de cette cellule est variable (B7 ou B8 ou B12 ou c14...etc) mais les 12 lignes sur 3 collones sont obligatoire.*

Je pense pouvoir partir de quelque chose comme suit :


Dim vCell1 As Variant 'Cellule du tableau en haut à gauche
Dim vCell2 As Variant 'Cellule du tableau en bas à droite
Dim vPlage As Range 'plage de cellule du tableau

With ActiveSheet
vCell1 = ActiveCell
vCell2 = vCell1 + 12
vPlage = Cells(vCell1 & vCell2).Select

End With

Ce code ne marche pas
Merci pour votre aide


2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 29/03/2011 à 16:24
Bonjour,

Voici un code simple :
Sub Test() 
Dim vPlage As Range 'plage de cellule du tableau 

  Set vPlage = ActiveCell.Resize(12, 3) 

  ' Pour copier la plage, pas besoin de la selectionner 
  vPlage.Copy Destination 
   
  ' Pour sélectionne la plage : 
  vPlage.Select 


End Sub 

Cordialement
Patrice
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
29 mars 2011 à 16:20
Bonjour,
1- pour déclarer tes variables, mieux vaux prendre le bon type. Ici cellule et plage sont de type "Range"
2- Utiliser Offset permet le décalage de lignes et colonnes qui définissent la plage
3- essaie ce code :
Sub test()
'déclaration des variables de type Range
Dim plage As Range
Dim Cellu As Range
'affectation aux variables de leur valeur respective
'Cellu = cellule active
Set Cellu = ActiveCell
'plage = range(cellule active, cellule active décalée de 12 lignes et 3 colonnes
Set plage = Range(Cellu, Cellu.Offset(12, 3))
'message à l'utilisateur : adresse de la plage
     MsgBox plage.Address
'remise à zéro des variables
Set Cellu = Nothing
Set plage = Nothing
'fin de la préocédure
End Sub

Tu dis
0
Goosdaye Messages postés 2 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 29 mars 2011
29 mars 2011 à 16:26
Merci, ça me parait une bonne piste..
j'étudirais cela demain.......je doit partir
Bonne soirée
P M
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
29 mars 2011 à 16:35
Une meilleure piste me semble être la proposition de Patrice...
0