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

- - Dernière réponse :  RAMIREZ - 23 juil. 2019 à 14:44
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.

Afficher la suite 

7 réponses

Meilleure réponse
approuvée par Jean-François Pillou le 6 déc. 2018
Messages postés
1771
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 juin 2019
369
29
Merci
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.

Dire « Merci » 29

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 69530 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
1771
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 juin 2019
369
12
Merci
set MaPlage = Range("A" & i & ":L" & i)
8
Merci
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
pijaku
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2204 > 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))
> pijaku
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
-
Merci !!!! ça marche parfaitement!
Sam1899
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
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2204
6
Merci
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

2
Merci
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
2
Merci
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 ???
eriiic
Messages postés
23028
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
1 novembre 2019
5728 -
Bonjour,

voir ici

eric
Messages postés
1
Date d'inscription
vendredi 31 octobre 2014
Statut
Membre
Dernière intervention
31 octobre 2014
2
2
Merci
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
eriiic
Messages postés
23028
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
1 novembre 2019
5728 -
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)