Determiner une plage de cellule avec variable

Fermé
Signaler
Messages postés
2
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
29 mars 2011
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 724
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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 668
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
Messages postés
2
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
29 mars 2011

Merci, ça me parait une bonne piste..
j'étudirais cela demain.......je doit partir
Bonne soirée
P M
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 668
Une meilleure piste me semble être la proposition de Patrice...