OVH Cloud OVH Cloud

Définir Nom sur Plage variable

9 réponses
Avatar
xtrail38
Bonjour,

J'ai fais une recherche avant de poser cette question, peut-être un peu
simplette, mais je n'y arrive pas.

Voilà, en VBA je souhaiterais donner un nom à une plage de cellules
verticales et sur une seule colonne, sachant que cette plage varie en nombre
de ligne, d'un mois à l'autre.

Merci,

xtrail38

9 réponses

Avatar
AV
With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV
Avatar
xtrail38
Re-bonjour

Je vais essayer de développer un peu plus.
Je cherche à nommer une plage de cellules (cette plage s'allonge vers le
bas), pour pouvoir récupérer ce nom dans la plage d'entrée d'une zone de
liste déroulante (formulaire).
Ceci, pour éviter d'avoir: ma liste plus du vide en dessous, si je
sélectionnais la colonne entière.

et merci pour l'info que tu viens de me donner AV, mais je ne vois pas
comment je pourrais l'associer à mon besoin.
Hormis, si tu me mettais le code VBA complet pour nommer cette plage avec ta
soluce.

"AV" a écrit dans le message de news:

With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV




Avatar
isabelle
bonjour xtrail38,

avec l'exemple donné par AV
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
userform1.listbox1.rowsource = plg.address

isabelle


Re-bonjour

Je vais essayer de développer un peu plus.
Je cherche à nommer une plage de cellules (cette plage s'allonge vers le
bas), pour pouvoir récupérer ce nom dans la plage d'entrée d'une zone de
liste déroulante (formulaire).
Ceci, pour éviter d'avoir: ma liste plus du vide en dessous, si je
sélectionnais la colonne entière.

et merci pour l'info que tu viens de me donner AV, mais je ne vois pas
comment je pourrais l'associer à mon besoin.
Hormis, si tu me mettais le code VBA complet pour nommer cette plage avec ta
soluce.

"AV" a écrit dans le message de news:

With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV






Avatar
xtrail38
Bonsoir,

Merci à Isabelle & AV. Voici ce que je viens d'écrire par rapport à ce que
vous m'avez répondu.
En sachant que pour le test, j'ai rempli les cellules de A1 à A8, et celà
marche très bien.
Mais je souhaiterais avoir un détail de la ligne concernant le "Set". Je ne
comprends pas du tout
les "." devant Range et .[A65536] et aussi ce End(3).
Mais bon, celà marche de toutes manières.

Merci encore,

Sub test()
With Sheets("Feuil1")
Set xrange = .Range("A1:A" & .[A65536].End(3).Row)
MsgBox (xrange.Address)
ActiveWorkbook.Names.Add Name:="maplage", RefersToR1C1:=xrange
End With
End Sub

"xtrail38" <xtrail38(arobase)hotmail.com> a écrit dans le message de news:
uW$
Re-bonjour

Je vais essayer de développer un peu plus.
Je cherche à nommer une plage de cellules (cette plage s'allonge vers le
bas), pour pouvoir récupérer ce nom dans la plage d'entrée d'une zone de
liste déroulante (formulaire).
Ceci, pour éviter d'avoir: ma liste plus du vide en dessous, si je
sélectionnais la colonne entière.

et merci pour l'info que tu viens de me donner AV, mais je ne vois pas
comment je pourrais l'associer à mon besoin.
Hormis, si tu me mettais le code VBA complet pour nommer cette plage avec
ta soluce.

"AV" a écrit dans le message de news:

With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV








Avatar
AV
Mais je souhaiterais avoir un détail de la ligne concernant le "Set".


Pour l'utilisation de l'instruction "Set", attribution d'une référence d'objet à
une variable, voir l'aide

comprends pas du tout les "." devant Range et .[A65536]


Le point signifie qu'il s'agit d'une propriété de l'objet qui précède le point
On pourrait écrire autrement :
Set xrange =Sheets("Feuil1").Range("A1:A" &Sheets("Feuil1").[A65536].End(3).Row)
L'utilisation de With évite la répétition de Sheets("Feuil1")
PS : Si tu ne précises pas la feuille
Set xrange = Range("A1:A" & [A65536].End(3).Row)
il s'agura, par défaut, de la feuille active...ce qui peut causer qques soucis
d'où l'utilité de préciser

et aussi ce End(3).


Il s'agit d'un raccourci syntaxique pour End(xlUp)

AV

Avatar
xtrail38
Bonjour,
Merci beaucoup AV,

Pour les ".", je n'avais pas percuté. En effet, avec le With Sheets("..."),
c'est évident.
Par contre, je ne connaissais pas du tout ce raccourci:
End(3) équivalent à End(xlUp)

Pourrions nous savoir où trouver ces raccourcis?
Ou à défaut, d'en avoir une liste?

Merci
--
xtrail38@"(arobase)"@hotmail.com
"xtrail38" a écrit dans le message de news:
uw%
Bonsoir,

Merci à Isabelle & AV. Voici ce que je viens d'écrire par rapport à ce que
vous m'avez répondu.
En sachant que pour le test, j'ai rempli les cellules de A1 à A8, et celà
marche très bien.
Mais je souhaiterais avoir un détail de la ligne concernant le "Set". Je
ne comprends pas du tout
les "." devant Range et .[A65536] et aussi ce End(3).
Mais bon, celà marche de toutes manières.

Merci encore,

Sub test()
With Sheets("Feuil1")
Set xrange = .Range("A1:A" & .[A65536].End(3).Row)
MsgBox (xrange.Address)
ActiveWorkbook.Names.Add Name:="maplage", RefersToR1C1:=xrange
End With
End Sub

"xtrail38" <xtrail38(arobase)hotmail.com> a écrit dans le message de news:
uW$
Re-bonjour

Je vais essayer de développer un peu plus.
Je cherche à nommer une plage de cellules (cette plage s'allonge vers le
bas), pour pouvoir récupérer ce nom dans la plage d'entrée d'une zone de
liste déroulante (formulaire).
Ceci, pour éviter d'avoir: ma liste plus du vide en dessous, si je
sélectionnais la colonne entière.

et merci pour l'info que tu viens de me donner AV, mais je ne vois pas
comment je pourrais l'associer à mon besoin.
Hormis, si tu me mettais le code VBA complet pour nommer cette plage avec
ta soluce.

"AV" a écrit dans le message de news:

With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV












Avatar
Pounet95
Bonjour,
Perso, même si je dois user encore plus mon clavier et mes doigts,
je préfère saisir le xlUp plutôt que le 3 ( ou 1, 2 ,..) et ce tout
simplement
pour une meilleure lisibilité pour ceux qui vont se créer une méga-tonsure
à relire les codes que j'ai commis. ;o))))
C'est vrai que les raccourcis sont partout et que l'on ne sait même plus ce
qu'ils veulent dire
tellement ils sont devenus des 'mots' du langage courant. Enfin, c'est
comme ça .....

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"xtrail38" a écrit dans le message de news:

Bonjour,
Merci beaucoup AV,

Pour les ".", je n'avais pas percuté. En effet, avec le With
Sheets("..."), c'est évident.
Par contre, je ne connaissais pas du tout ce raccourci:
End(3) équivalent à End(xlUp)

Pourrions nous savoir où trouver ces raccourcis?
Ou à défaut, d'en avoir une liste?

Merci
--
xtrail38@"(arobase)"@hotmail.com
"xtrail38" a écrit dans le message de news:
uw%
Bonsoir,

Merci à Isabelle & AV. Voici ce que je viens d'écrire par rapport à ce
que vous m'avez répondu.
En sachant que pour le test, j'ai rempli les cellules de A1 à A8, et celà
marche très bien.
Mais je souhaiterais avoir un détail de la ligne concernant le "Set". Je
ne comprends pas du tout
les "." devant Range et .[A65536] et aussi ce End(3).
Mais bon, celà marche de toutes manières.

Merci encore,

Sub test()
With Sheets("Feuil1")
Set xrange = .Range("A1:A" & .[A65536].End(3).Row)
MsgBox (xrange.Address)
ActiveWorkbook.Names.Add Name:="maplage", RefersToR1C1:=xrange
End With
End Sub

"xtrail38" <xtrail38(arobase)hotmail.com> a écrit dans le message de
news: uW$
Re-bonjour

Je vais essayer de développer un peu plus.
Je cherche à nommer une plage de cellules (cette plage s'allonge vers le
bas), pour pouvoir récupérer ce nom dans la plage d'entrée d'une zone de
liste déroulante (formulaire).
Ceci, pour éviter d'avoir: ma liste plus du vide en dessous, si je
sélectionnais la colonne entière.

et merci pour l'info que tu viens de me donner AV, mais je ne vois pas
comment je pourrais l'associer à mon besoin.
Hormis, si tu me mettais le code VBA complet pour nommer cette plage
avec ta soluce.

"AV" a écrit dans le message de news:

With Sheets("Feuil2")
Set plg = .Range("A1:A" & .[A65536].End(3).Row)
End With

Exemple d'utilisation :
MsgBox Application.CountA(plg)

AV
















Avatar
AV
Par contre, je ne connaissais pas du tout ce raccourci:
End(3) équivalent à End(xlUp)
Pourrions nous savoir où trouver ces raccourcis?
Ou à défaut, d'en avoir une liste?


Si tu y tiens...
Les arguments des propriétés peuvent remplacées par leur index
Pour "End", l'aide va te renvoyer :
xIToLeft, xIToRight, xIUp,xIDown
d'où xIUp équivaut à 3

AV

Avatar
AV
Sans être en désaccord avec toi.....
Une protection reste toute relative par contre, l'absconcité (volontaire) d'un
code, peut être un bon moyen ....

AV