VBA Excel : sélection d'une plage variable [Résolu/Fermé]

Signaler
-
 RAMIREZ -
Bonjour tout le monde,

Je dois sélectionner une plage de cellules en fonction d'une variable i, qui représente le numéro de la ligne voulue. Suite à des recherches sur ccm.net et d'autres forums, j'ai trouvé le code suivant :

Dim MaPlage As Range

MaPlage = Range("A" & i & ":L" & i)


Je suis sur Excel 2003 et qqc cloche : VBA me renvoie "erreur d'éxecution 91 : variable objet ou variable de bloc With non définie". Vraiment, je ne comprends pas. Quelqu'un a une idée ?

Merci d'avance,
Pyanitsa.

7 réponses

Messages postés
1769
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
15 juin 2020
500
Range("A" & i & ":L" & i) représente une plage de cellules, c'est à dire un "objet Excel" au même titre qu'un classeur, une feuille, une cellule.
Pour assigner une variable (= MaPlage) à un objet, il faut utiliser l'instruction SET.

Cela dit , pour assigner ta plage variable de cellules , je préfère l'instruction :

set MaPlage = Columns("A:L").Rows(i)


que je trouve plus lisible.
31
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59440 internautes nous ont dit merci ce mois-ci

Nickel, Merci beaucoup, Thev ! Mais pourquoi y avait-il besoin du 'set' ? (je débute tout juste en programmation)
MRC gros j'ai éviter d'etre un robot grace a ca
Messages postés
1769
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
15 juin 2020
500
set MaPlage = Range("A" & i & ":L" & i)
Bonjour,
Débutant VBA Excel 2003
comment sélectionner une plage de données,exemple : de A1 à Zdernière ligne non vide ?
Suite à un import d'un fichier externe le nombre de lignes importées varient et donc le numéro de la dernière ligne n'est jamais identique.
D'avance merci
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 450 > Nessa
Bonjour,

Avec DernColonne, il faut utiliser Cells dans le Range :
Dim maPlage As Range
Dim DernLigne As Long, DernColonne As Integer
'dernière ligne colonne A
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
'dernière colonne ligne 1
DernColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Set maPlage = Range(Cells(1, 1), Cells(DernLigne, DernColonne))
>
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020

Merci !!!! ça marche parfaitement!
Messages postés
14
Date d'inscription
jeudi 23 juin 2016
Statut
Membre
Dernière intervention
22 juillet 2016

salut je cherche a faire appelle a une colonne a partir d'une variable "Tension1"
merci
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 450
Bonjour,

Juste pour tester, essayez ceci :
Dim MaPlage As Range
Dim i As Integer
i = 1
Set MaPlage = Range("A" & i & ":L"& i) 
MaPlage.Select

Pourtant, j'ai déjà affecté des valeurs à des variables (des entiers) sans utiliser le 'set'.

Elle est pas mal du tout, ta syntaxe ! Je ne la connaissais pas. Je crois qu'on peut aussi utiliser 'Cell' à la place de 'Range', mais ce dernier m'a l'air plus maniable.

Merci encore une fois !
Messages postés
10
Date d'inscription
mercredi 8 mai 2013
Statut
Membre
Dernière intervention
9 mai 2013
2
j'ai lu toutes vos réponses, mais est-ce que le VBA sur 2010 est le même que le VBA sur excel 2003 ???
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
Bonjour,

voir ici

eric
Messages postés
1
Date d'inscription
vendredi 31 octobre 2014
Statut
Membre
Dernière intervention
31 octobre 2014
2
Bonjour tout le monde,

Je dois sélectionner une plage de cellules en fonction d'une variable i, qui représente le numéro de la ligne voulue. Suite à des recherches sur ccm.net et d'autres forums, j'ai trouvé le code suivant :

Dim MaPlage As Range

MaPlage = Range("A" & i & ":L" & i)


Je suis sur Excel 2003 et qqc cloche : VBA me renvoie "erreur d'éxecution 91 : variable objet ou variable de bloc With non définie". Vraiment, je ne comprends pas. Quelqu'un a une idée ?

Merci d'avance,
Pyanitsa.
-------------------------------------------------------------------
V-31-10-2014
Bonjour, Il vous est également possible d'écrire MaPlage ainsi:

Dim MaPlage As Range
Dim i As Integer

Set MaPlage = Range("A" & i , "L"& i)
'La ligne i allant de la colonne A à la colonne L correspondra à MaPlage

Pour obtenir une p
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
Bonjour,

Pourquoi recoller la question et la réponse #1 ????

eric
Bonjour
Recopier la question permet de mieux apprécier la réponse.
Cette écriture ne figure pas dans la répons numéro 1
Range("A" & i , "L"& i) me paraît plus simple que l'écriture ci-dessous même si elle donne le même résultat
Range("A" & i & ":L" & i)