VBA Excel : sélection d'une plage variable

Résolu/Fermé
-
 Mima -
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
1770
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
11 novembre 2021
661
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.
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
Merci beaucoup, méthode simple, mais éfficace
Messages postés
1770
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
11 novembre 2021
661
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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 678
Bonjour,
Essaye ceci :

Dim maPlage As Range
Dim DernLigne As Long

DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Set maPlage = Range("A1:Z" & DernLigne)
>
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021

Bonjour Pijaku! Etant novice en vba, je souhaite votre aide et votre expertise sur un code qui m'empêche d'avancer dans mon travail. En effet j'utilise votre code ci dessous
Dim maPlage As Range
Dim DernLigne As Long
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Set maPlage = Range("A1:Z" & DernLigne)

Mon problème est que le Z n'est pas fixe, ça peut être P, S, R, AA, Z, AY...

J'ai pensé alors à définir une nouvelle variable DernColonne par exemple. Mais je n'arrive pas à définir "maPlage" avec la combinaison de DernColonne et de DernLigne.

Merci d'avance de votre aide.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 678 > 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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021

Merci !!!! ça marche parfaitement!
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 678
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
3
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
24295
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 janvier 2022
7 040
Bonjour,

voir ici

eric
Messages postés
1
Date d'inscription
vendredi 31 octobre 2014
Statut
Membre
Dernière intervention
31 octobre 2014
3
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
24295
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 janvier 2022
7 040
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)