Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation nom plage dans macro

14 réponses
Avatar
mik
Bonjour,

je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
à une plage dans une macro.
Exemple:
je nomme ma plage "titi" qui fait référence à =Feuil1!$A$1:$B$2 et ainsi
dans ma macro je balaye "titi" au lieu de balayer =Feuil1!$A$1:$B$2 en dur.
Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
colonne change pas).

Merci de votre réponse
mik

10 réponses

1 2
Avatar
Misange
Bonsoir,
oui bien sur tu peux ! C'est même une excellente solution
Range("MaPlage").select

des infos plus détaillées ici
http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range

Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !


mik a écrit :
Bonjour,

je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
à une plage dans une macro.
Exemple:
je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en dur.
Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
colonne change pas).

Merci de votre réponse
mik


Avatar
mik
Merci Misange!!
C'est exactement ce que je cherchais!!

Bonne journée,
mik

"Misange" wrote:

Bonsoir,
oui bien sur tu peux ! C'est même une excellente solution
Range("MaPlage").select

des infos plus détaillées ici
http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range

Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !


mik a écrit :
> Bonjour,
>
> je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
> à une plage dans une macro.
> Exemple:
> je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
> dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en dur.
> Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
> lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
> colonne change pas).
>
> Merci de votre réponse
> mik



Avatar
mik
Bon j'y arrive pas :(
J'ai une formation prévue mi aout pour améliorer ça mais en attendant
quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et que
toutes mes celulles sont remplies?

Ma demande finale est assez simple:
J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV

Exemple:
Plage 1
A1 =vide mais couleur fond bleu
A2 =vide mais couleur fond rouge

Plage 2
B1 (de couleur fond bleu)
B2 (de couleur fond rouge) =5

donc total en A3 à la fin de la plage 1 = 17

Merci d'avance de votre aide


"mik" wrote:

Merci Misange!!
C'est exactement ce que je cherchais!!

Bonne journée,
mik

"Misange" wrote:

> Bonsoir,
> oui bien sur tu peux ! C'est même une excellente solution
> Range("MaPlage").select
>
> des infos plus détaillées ici
> http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
>
> Misange migrateuse
> http://www.excelabo.net : Participez à un travail collaboratif sur excel !
>
>
> mik a écrit :
> > Bonjour,
> >
> > je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
> > à une plage dans une macro.
> > Exemple:
> > je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
> > dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en dur.
> > Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
> > lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
> > colonne change pas).
> >
> > Merci de votre réponse
> > mik
>


Avatar
MichDenis
Bonjour Mik

s = Range("nomplage").Offset(1, 5).Value
Ceci retourne une ligne plus bas et 5 colonne plus à droite.

Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
s = Range("nomplage").Offset(0, 5).Value
OU
s = Range("nomplage").Offset(, 5).Value



"mik" a écrit dans le message de groupe de discussion :

Bon j'y arrive pas :(
J'ai une formation prévue mi aout pour améliorer ça mais en attendant
quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et que
toutes mes celulles sont remplies?

Ma demande finale est assez simple:
J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV

Exemple:
Plage 1
A1 =vide mais couleur fond bleu
A2 =vide mais couleur fond rouge

Plage 2
B1 (de couleur fond bleu)
B2 (de couleur fond rouge) =5

donc total en A3 à la fin de la plage 1 = 17

Merci d'avance de votre aide


"mik" wrote:

Merci Misange!!
C'est exactement ce que je cherchais!!

Bonne journée,
mik

"Misange" wrote:

> Bonsoir,
> oui bien sur tu peux ! C'est même une excellente solution
> Range("MaPlage").select
>
> des infos plus détaillées ici
> http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
>
> Misange migrateuse
> http://www.excelabo.net : Participez à un travail collaboratif sur excel !
>
>
> mik a écrit :
> > Bonjour,
> >
> > je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
> > à une plage dans une macro.
> > Exemple:
> > je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
> > dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en dur.
> > Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
> > lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
> > colonne change pas).
> >
> > Merci de votre réponse
> > mik
>


Avatar
mik
Bonjour,

ca ne donne rien de plus.
il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir quelque
chose en Range("nomplage").Offset(1, 5).value

En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes de
RANGE" sont vides... Pourtant il en voit bien de Range("nomplage").Offset(1,
1) à Range("nomplage").Offset(14, 5).

Merci de votre aide

"MichDenis" wrote:

Bonjour Mik

s = Range("nomplage").Offset(1, 5).Value
Ceci retourne une ligne plus bas et 5 colonne plus à droite.

Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
s = Range("nomplage").Offset(0, 5).Value
OU
s = Range("nomplage").Offset(, 5).Value



"mik" a écrit dans le message de groupe de discussion :

Bon j'y arrive pas :(
J'ai une formation prévue mi aout pour améliorer ça mais en attendant
quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et que
toutes mes celulles sont remplies?

Ma demande finale est assez simple:
J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV

Exemple:
Plage 1
A1 =vide mais couleur fond bleu
A2 =vide mais couleur fond rouge

Plage 2
B1 (de couleur fond bleu)
B2 (de couleur fond rouge) =5

donc total en A3 à la fin de la plage 1 = 17

Merci d'avance de votre aide


"mik" wrote:

> Merci Misange!!
> C'est exactement ce que je cherchais!!
>
> Bonne journée,
> mik
>
> "Misange" wrote:
>
> > Bonsoir,
> > oui bien sur tu peux ! C'est même une excellente solution
> > Range("MaPlage").select
> >
> > des infos plus détaillées ici
> > http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
> >
> > Misange migrateuse
> > http://www.excelabo.net : Participez à un travail collaboratif sur excel !
> >
> >
> > mik a écrit :
> > > Bonjour,
> > >
> > > je cherchais a savoir si il était possible d'utiliser le nom que l'on donne
> > > à une plage dans une macro.
> > > Exemple:
> > > je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
> > > dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en dur.
> > > Si ma macro est appelée dans un autre fichier et que la plage "titi" a 150
> > > lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb de
> > > colonne change pas).
> > >
> > > Merci de votre réponse
> > > mik
> >



Avatar
Daniel.C
Bonjour.
Si tu n'as que 5 colonnes et que tu décales de 5, tu vas taper dans la
6e colonne à partir du bord gauche de "nomplage". Pour mieux le
visualiser, entre :
Range("nomplage").Offset(1, 5).Select
et regarde ce qui est sélectionné.
Daniel

Bonjour,

ca ne donne rien de plus.
il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir quelque
chose en Range("nomplage").Offset(1, 5).value

En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes de
RANGE" sont vides... Pourtant il en voit bien de Range("nomplage").Offset(1,
1) à Range("nomplage").Offset(14, 5).

Merci de votre aide

"MichDenis" wrote:

Bonjour Mik

s = Range("nomplage").Offset(1, 5).Value
Ceci retourne une ligne plus bas et 5 colonne plus à droite.

Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
s = Range("nomplage").Offset(0, 5).Value
OU
s = Range("nomplage").Offset(, 5).Value



"mik" a écrit dans le message de groupe de
discussion :
Bon j'y arrive pas :(
J'ai une formation prévue mi aout pour améliorer ça mais en attendant
quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et
que toutes mes celulles sont remplies?

Ma demande finale est assez simple:
J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV

Exemple:
Plage 1
A1 =vide mais couleur fond bleu
A2 =vide mais couleur fond rouge

Plage 2
B1 (de couleur fond bleu)
B2 (de couleur fond rouge) =5

donc total en A3 à la fin de la plage 1 = 17

Merci d'avance de votre aide


"mik" wrote:

Merci Misange!!
C'est exactement ce que je cherchais!!

Bonne journée,
mik

"Misange" wrote:

Bonsoir,
oui bien sur tu peux ! C'est même une excellente solution
Range("MaPlage").select

des infos plus détaillées ici
http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range

Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !


mik a écrit :
Bonjour,

je cherchais a savoir si il était possible d'utiliser le nom que l'on
donne à une plage dans une macro.
Exemple:
je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en
dur. Si ma macro est appelée dans un autre fichier et que la plage "titi"
a 150 lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb
de colonne change pas).

Merci de votre réponse
mik












Avatar
mik
J'ai fait le test et offset ne permet pas de sélectionner une celulle à
l'intérieur de la plage mais de sélectionner une zone de taille (nb lignes et
nb colonnes) identique à la plage par rapport à l'emplacement de cette meme
plage.

donc dans mon exemple "nomplage" en $A$1:$E$14 (14 lignes, 5 colonnes)
Range("nomplage").Offset(1, 5).Select te sélectionne la plage $F$2:$J$15

Donc la question est comment sélectionner une seule cellule de ma plage??

Merci

"Daniel.C" wrote:

Bonjour.
Si tu n'as que 5 colonnes et que tu décales de 5, tu vas taper dans la
6e colonne à partir du bord gauche de "nomplage". Pour mieux le
visualiser, entre :
Range("nomplage").Offset(1, 5).Select
et regarde ce qui est sélectionné.
Daniel

> Bonjour,
>
> ca ne donne rien de plus.
> il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir quelque
> chose en Range("nomplage").Offset(1, 5).value
>
> En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes de
> RANGE" sont vides... Pourtant il en voit bien de Range("nomplage").Offset(1,
> 1) à Range("nomplage").Offset(14, 5).
>
> Merci de votre aide
>
> "MichDenis" wrote:
>
>> Bonjour Mik
>>
>> s = Range("nomplage").Offset(1, 5).Value
>> Ceci retourne une ligne plus bas et 5 colonne plus à droite.
>>
>> Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
>> s = Range("nomplage").Offset(0, 5).Value
>> OU
>> s = Range("nomplage").Offset(, 5).Value
>>
>>
>>
>> "mik" a écrit dans le message de groupe de
>> discussion :
>> Bon j'y arrive pas :(
>> J'ai une formation prévue mi aout pour améliorer ça mais en attendant
>> quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
>> 5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et
>> que toutes mes celulles sont remplies?
>>
>> Ma demande finale est assez simple:
>> J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
>> critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV
>>
>> Exemple:
>> Plage 1
>> A1 =vide mais couleur fond bleu
>> A2 =vide mais couleur fond rouge
>>
>> Plage 2
>> B1 (de couleur fond bleu)
>> B2 (de couleur fond rouge) =5
>>
>> donc total en A3 à la fin de la plage 1 = 17
>>
>> Merci d'avance de votre aide
>>
>>
>> "mik" wrote:
>>
>>> Merci Misange!!
>>> C'est exactement ce que je cherchais!!
>>>
>>> Bonne journée,
>>> mik
>>>
>>> "Misange" wrote:
>>>
>>>> Bonsoir,
>>>> oui bien sur tu peux ! C'est même une excellente solution
>>>> Range("MaPlage").select
>>>>
>>>> des infos plus détaillées ici
>>>> http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
>>>>
>>>> Misange migrateuse
>>>> http://www.excelabo.net : Participez à un travail collaboratif sur excel !
>>>>
>>>>
>>>> mik a écrit :
>>>>> Bonjour,
>>>>>
>>>>> je cherchais a savoir si il était possible d'utiliser le nom que l'on
>>>>> donne à une plage dans une macro.
>>>>> Exemple:
>>>>> je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
>>>>> dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en
>>>>> dur. Si ma macro est appelée dans un autre fichier et que la plage "titi"
>>>>> a 150 lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb
>>>>> de colonne change pas).
>>>>>
>>>>> Merci de votre réponse
>>>>> mik
>>>>
>>





Avatar
MichDenis
Présentation plus claire, réponse probablement mieux adapté !

Soit la plage nommée "NomPlage" faisant référence à : $A$1:$E$14
Sélectionne la cellule F1 , soit 5 colonnes à droite de A1

Range("nomplage")(1,1).Offset(, 5).Select




"mik" a écrit dans le message de groupe de discussion :

J'ai fait le test et offset ne permet pas de sélectionner une celulle à
l'intérieur de la plage mais de sélectionner une zone de taille (nb lignes et
nb colonnes) identique à la plage par rapport à l'emplacement de cette meme
plage.

donc dans mon exemple "nomplage" en $A$1:$E$14 (14 lignes, 5 colonnes)
Range("nomplage").Offset(1, 5).Select te sélectionne la plage $F$2:$J$15

Donc la question est comment sélectionner une seule cellule de ma plage??

Merci

"Daniel.C" wrote:

Bonjour.
Si tu n'as que 5 colonnes et que tu décales de 5, tu vas taper dans la
6e colonne à partir du bord gauche de "nomplage". Pour mieux le
visualiser, entre :
Range("nomplage").Offset(1, 5).Select
et regarde ce qui est sélectionné.
Daniel

> Bonjour,
>
> ca ne donne rien de plus.
> il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir quelque
> chose en Range("nomplage").Offset(1, 5).value
>
> En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes de
> RANGE" sont vides... Pourtant il en voit bien de Range("nomplage").Offset(1,
> 1) à Range("nomplage").Offset(14, 5).
>
> Merci de votre aide
>
> "MichDenis" wrote:
>
>> Bonjour Mik
>>
>> s = Range("nomplage").Offset(1, 5).Value
>> Ceci retourne une ligne plus bas et 5 colonne plus à droite.
>>
>> Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
>> s = Range("nomplage").Offset(0, 5).Value
>> OU
>> s = Range("nomplage").Offset(, 5).Value
>>
>>
>>
>> "mik" a écrit dans le message de groupe de
>> discussion :
>> Bon j'y arrive pas :(
>> J'ai une formation prévue mi aout pour améliorer ça mais en attendant
>> quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
>> 5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et
>> que toutes mes celulles sont remplies?
>>
>> Ma demande finale est assez simple:
>> J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
>> critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV
>>
>> Exemple:
>> Plage 1
>> A1 =vide mais couleur fond bleu
>> A2 =vide mais couleur fond rouge
>>
>> Plage 2
>> B1 (de couleur fond bleu)
>> B2 (de couleur fond rouge) =5
>>
>> donc total en A3 à la fin de la plage 1 = 17
>>
>> Merci d'avance de votre aide
>>
>>
>> "mik" wrote:
>>
>>> Merci Misange!!
>>> C'est exactement ce que je cherchais!!
>>>
>>> Bonne journée,
>>> mik
>>>
>>> "Misange" wrote:
>>>
>>>> Bonsoir,
>>>> oui bien sur tu peux ! C'est même une excellente solution
>>>> Range("MaPlage").select
>>>>
>>>> des infos plus détaillées ici
>>>> http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
>>>>
>>>> Misange migrateuse
>>>> http://www.excelabo.net : Participez à un travail collaboratif sur excel !
>>>>
>>>>
>>>> mik a écrit :
>>>>> Bonjour,
>>>>>
>>>>> je cherchais a savoir si il était possible d'utiliser le nom que l'on
>>>>> donne à une plage dans une macro.
>>>>> Exemple:
>>>>> je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
>>>>> dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en
>>>>> dur. Si ma macro est appelée dans un autre fichier et que la plage "titi"
>>>>> a 150 lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb
>>>>> de colonne change pas).
>>>>>
>>>>> Merci de votre réponse
>>>>> mik
>>>>
>>





Avatar
mik
non non offset ne sert pas à sélectionner une cellule de ma plage mais
seulement à décales en DEHORS de la plage.
Mais merci bcp car la syntaxe est en effet Range("nomplage")(1,5).select.

par contre du coup comment je parcours ma plage dans VBA si je connais pas
le nb max de lignes???

merci
mik

"MichDenis" wrote:

Présentation plus claire, réponse probablement mieux adapté !

Soit la plage nommée "NomPlage" faisant référence à : $A$1:$E$14
Sélectionne la cellule F1 , soit 5 colonnes à droite de A1

Range("nomplage")(1,1).Offset(, 5).Select




"mik" a écrit dans le message de groupe de discussion :

J'ai fait le test et offset ne permet pas de sélectionner une celulle à
l'intérieur de la plage mais de sélectionner une zone de taille (nb lignes et
nb colonnes) identique à la plage par rapport à l'emplacement de cette meme
plage.

donc dans mon exemple "nomplage" en $A$1:$E$14 (14 lignes, 5 colonnes)
Range("nomplage").Offset(1, 5).Select te sélectionne la plage $F$2:$J$15

Donc la question est comment sélectionner une seule cellule de ma plage??

Merci

"Daniel.C" wrote:

> Bonjour.
> Si tu n'as que 5 colonnes et que tu décales de 5, tu vas taper dans la
> 6e colonne à partir du bord gauche de "nomplage". Pour mieux le
> visualiser, entre :
> Range("nomplage").Offset(1, 5).Select
> et regarde ce qui est sélectionné.
> Daniel
>
> > Bonjour,
> >
> > ca ne donne rien de plus.
> > il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir quelque
> > chose en Range("nomplage").Offset(1, 5).value
> >
> > En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes de
> > RANGE" sont vides... Pourtant il en voit bien de Range("nomplage").Offset(1,
> > 1) à Range("nomplage").Offset(14, 5).
> >
> > Merci de votre aide
> >
> > "MichDenis" wrote:
> >
> >> Bonjour Mik
> >>
> >> s = Range("nomplage").Offset(1, 5).Value
> >> Ceci retourne une ligne plus bas et 5 colonne plus à droite.
> >>
> >> Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
> >> s = Range("nomplage").Offset(0, 5).Value
> >> OU
> >> s = Range("nomplage").Offset(, 5).Value
> >>
> >>
> >>
> >> "mik" a écrit dans le message de groupe de
> >> discussion :
> >> Bon j'y arrive pas :(
> >> J'ai une formation prévue mi aout pour améliorer ça mais en attendant
> >> quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
> >> 5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et
> >> que toutes mes celulles sont remplies?
> >>
> >> Ma demande finale est assez simple:
> >> J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres un
> >> critère qu'il faudrait rechercher dans la plage 2. Un espèce de RECHERCHEV
> >>
> >> Exemple:
> >> Plage 1
> >> A1 =vide mais couleur fond bleu
> >> A2 =vide mais couleur fond rouge
> >>
> >> Plage 2
> >> B1 (de couleur fond bleu)
> >> B2 (de couleur fond rouge) =5
> >>
> >> donc total en A3 à la fin de la plage 1 = 17
> >>
> >> Merci d'avance de votre aide
> >>
> >>
> >> "mik" wrote:
> >>
> >>> Merci Misange!!
> >>> C'est exactement ce que je cherchais!!
> >>>
> >>> Bonne journée,
> >>> mik
> >>>
> >>> "Misange" wrote:
> >>>
> >>>> Bonsoir,
> >>>> oui bien sur tu peux ! C'est même une excellente solution
> >>>> Range("MaPlage").select
> >>>>
> >>>> des infos plus détaillées ici
> >>>> http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range
> >>>>
> >>>> Misange migrateuse
> >>>> http://www.excelabo.net : Participez à un travail collaboratif sur excel !
> >>>>
> >>>>
> >>>> mik a écrit :
> >>>>> Bonjour,
> >>>>>
> >>>>> je cherchais a savoir si il était possible d'utiliser le nom que l'on
> >>>>> donne à une plage dans une macro.
> >>>>> Exemple:
> >>>>> je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et ainsi
> >>>>> dans ma macro je balaye "titi" au lieu de balayer þuil1!$A$1:$B$2 en
> >>>>> dur. Si ma macro est appelée dans un autre fichier et que la plage "titi"
> >>>>> a 150 lignes au lieu de 2 il n'est pas besoin de retoucher le code (le nb
> >>>>> de colonne change pas).
> >>>>>
> >>>>> Merci de votre réponse
> >>>>> mik
> >>>>
> >>
>
>
>



Avatar
Daniel.C
Inexact.
Range("A1:A10").Offset(1).Select
sélectionne les cellules A2:A11, soit à la fois des cellules internes
et des cellules externes à la plage initiale.
Le syntaxe :
Range("A1:A10")(1,2).Select
sélectionne B1, soit une cellule à l'extérieur de la plage initiale.
Si tu veux parcourir chacune de tes cellules, utilise :
Dim c as Range
For each c in range("nomplage")
...
next c
Daniel
PS le nombre de ligne de la plaqge est donné par :
range("nomplage").rows.count

non non offset ne sert pas à sélectionner une cellule de ma plage mais
seulement à décales en DEHORS de la plage.
Mais merci bcp car la syntaxe est en effet Range("nomplage")(1,5).select.

par contre du coup comment je parcours ma plage dans VBA si je connais pas
le nb max de lignes???

merci
mik

"MichDenis" wrote:

Présentation plus claire, réponse probablement mieux adapté !

Soit la plage nommée "NomPlage" faisant référence à : $A$1:$E$14
Sélectionne la cellule F1 , soit 5 colonnes à droite de A1

Range("nomplage")(1,1).Offset(, 5).Select




"mik" a écrit dans le message de groupe de
discussion :
J'ai fait le test et offset ne permet pas de sélectionner une celulle à
l'intérieur de la plage mais de sélectionner une zone de taille (nb lignes
et nb colonnes) identique à la plage par rapport à l'emplacement de cette
meme plage.

donc dans mon exemple "nomplage" en $A$1:$E$14 (14 lignes, 5 colonnes)
Range("nomplage").Offset(1, 5).Select te sélectionne la plage $F$2:$J$15

Donc la question est comment sélectionner une seule cellule de ma plage??

Merci

"Daniel.C" wrote:

Bonjour.
Si tu n'as que 5 colonnes et que tu décales de 5, tu vas taper dans la
6e colonne à partir du bord gauche de "nomplage". Pour mieux le
visualiser, entre :
Range("nomplage").Offset(1, 5).Select
et regarde ce qui est sélectionné.
Daniel

Bonjour,

ca ne donne rien de plus.
il y a 14 lignes et 5 colonnes donc je devrais de toutes facons voir
quelque chose en Range("nomplage").Offset(1, 5).value

En mettant un espion dans VBA, cela m'indique que toutes les "coordonnes
de RANGE" sont vides... Pourtant il en voit bien de
Range("nomplage").Offset(1, 1) à Range("nomplage").Offset(14, 5).

Merci de votre aide

"MichDenis" wrote:

Bonjour Mik

s = Range("nomplage").Offset(1, 5).Value
Ceci retourne une ligne plus bas et 5 colonne plus à droite.

Si tu veux obtenir la valeur de la cellule 5 colonnes à droite,
s = Range("nomplage").Offset(0, 5).Value
OU
s = Range("nomplage").Offset(, 5).Value



"mik" a écrit dans le message de groupe
de discussion :
Bon j'y arrive pas :(
J'ai une formation prévue mi aout pour améliorer ça mais en attendant
quelqu'un pourrait-il m'expliquer pourquoi "Range("nomplage").Offset(1,
5).Value m'affiche "vide" alors que j'ai bien 5 colonnes dans ma plage et
que toutes mes celulles sont remplies?

Ma demande finale est assez simple:
J'ai 2 Plages, je voudrais faire une somme à la fin de la plage 1 d'apres
un critère qu'il faudrait rechercher dans la plage 2. Un espèce de
RECHERCHEV

Exemple:
Plage 1
A1 =vide mais couleur fond bleu
A2 =vide mais couleur fond rouge

Plage 2
B1 (de couleur fond bleu)
B2 (de couleur fond rouge) =5

donc total en A3 à la fin de la plage 1 = 17

Merci d'avance de votre aide


"mik" wrote:

Merci Misange!!
C'est exactement ce que je cherchais!!

Bonne journée,
mik

"Misange" wrote:

Bonsoir,
oui bien sur tu peux ! C'est même une excellente solution
Range("MaPlage").select

des infos plus détaillées ici
http://www.excelabo.net/pasapas/range" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/pasapas/range

Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur
excel !


mik a écrit :
Bonjour,

je cherchais a savoir si il était possible d'utiliser le nom que l'on
donne à une plage dans une macro.
Exemple:
je nomme ma plage "titi" qui fait référence à þuil1!$A$1:$B$2 et
ainsi dans ma macro je balaye "titi" au lieu de balayer
þuil1!$A$1:$B$2 en dur. Si ma macro est appelée dans un autre
fichier et que la plage "titi" a 150 lignes au lieu de 2 il n'est pas
besoin de retoucher le code (le nb de colonne change pas).

Merci de votre réponse
mik






















1 2