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

Boucler en VBA sur une collection de plages nommées

6 réponses
Avatar
luck82
Bonjour;
J'ai nommées des plages de cellules (avec excel97) et je voudrai faire un
programme en VBA qui boucle sur ma collection ( de plages nommées).

Je m'explique: il faudrait que la macro recherche la premiere plage nommée
sélectionne les cellules correspondante et applique un format bordure puis
passe à la plage nommée suivante... .
Difficulté supplementaire: les plages nommées sont des plages dynamiques.
J'ai bien trouvé une macro mais elle marche uniquement avec des plages
statique du style Toto=$A$1:$A$10

Voila, j'ai beau chercher mais là je n'y arrive pas.
Si quelqu'un à une idée! Merci par avance; ca m'évitera une nuit blanche de
plus.

6 réponses

Avatar
JB
Bonjour,

http://cjoint.com/?bDssmcp5nS

Sub essai()
For Each n In ActiveWorkbook.Names
Range(n.Name).BorderAround Weight:=xlMedium
Next n
End Sub

aaaa þuil2!$B$5:$C$10
kkk ÞCALER(Feuil2!$F$1;;;NBVAL(Feuil2!$F:$F))
xxx þuil1!$B$3:$C$6
yyy þuil1!$E$6:$G$10
zzz ÞCALER(Feuil1!$I$1;;;NBVAL(Feuil1!$I:$I))


Cordialement JB

On 29 jan, 17:58, "luck82" wrote:
Bonjour;
J'ai nommées des plages de cellules (avec excel97) et je voudrai faire un
programme en VBA qui boucle sur ma collection ( de plages nommées).

Je m'explique: il faudrait que la macro recherche la premiere plage nomm ée
sélectionne les cellules correspondante et applique un format bordure p uis
passe à la plage nommée suivante... .
Difficulté supplementaire: les plages nommées sont des plages dynamiq ues.
J'ai bien trouvé une macro mais elle marche uniquement avec des plages
statique du style Toto=$A$1:$A$10

Voila, j'ai beau chercher mais là je n'y arrive pas.
Si quelqu'un à une idée! Merci par avance; ca m'évitera une nuit bl anche de
plus.


Avatar
luck82
Merci beaucoup JB; le code marche supers bien.

PS: Actuellement en plien apprentissage du VBA, je voudrai savoir ce que
deviendrai les lignes:
Sub essai() et For Each n In ActiveWorkbook.Names si au lieu de mettre le
code dans un module je le mets dans un objet feuil.
Désolais pour cette question certainement évidente mais j'ai du mal à voire
les differences entre module, objet feuil, private sub, const sub, sub ... .

Codialement.


"JB" a écrit dans le message de
news:
Bonjour,

http://cjoint.com/?bDssmcp5nS

Sub essai()
For Each n In ActiveWorkbook.Names
Range(n.Name).BorderAround Weight:=xlMedium
Next n
End Sub

aaaa þuil2!$B$5:$C$10
kkk ÞCALER(Feuil2!$F$1;;;NBVAL(Feuil2!$F:$F))
xxx þuil1!$B$3:$C$6
yyy þuil1!$E$6:$G$10
zzz ÞCALER(Feuil1!$I$1;;;NBVAL(Feuil1!$I:$I))


Cordialement JB
Avatar
MichDenis
Tu peux utiliser ceci : Tu peux le placer dans un
module standard ou un module feuille.

Si tu boucle sur l'ensemble des "noms" de ton classeur,
tu dois d'abord t'assurer dans ta procédure que tous
tes noms sont des plages de cellules, nom des formules
ou des constantes.

'--------------------------
Sub test()
Dim Plg As String
For Each n In ThisWorkbook.Names
Plg = Replace([n], "=", "")
If TypeOf Evaluate(Plg) Is Range Then
Range(Plg).BorderAround xlContinuous, xlThick
End If
Next
End Sub
'--------------------------


"luck82" a écrit dans le message de news:
%
Bonjour;
J'ai nommées des plages de cellules (avec excel97) et je voudrai faire un
programme en VBA qui boucle sur ma collection ( de plages nommées).

Je m'explique: il faudrait que la macro recherche la premiere plage nommée
sélectionne les cellules correspondante et applique un format bordure puis
passe à la plage nommée suivante... .
Difficulté supplementaire: les plages nommées sont des plages dynamiques.
J'ai bien trouvé une macro mais elle marche uniquement avec des plages
statique du style Toto=$A$1:$A$10

Voila, j'ai beau chercher mais là je n'y arrive pas.
Si quelqu'un à une idée! Merci par avance; ca m'évitera une nuit blanche de
plus.
Avatar
JB
Les procédures (Sub) et fonctions(Function) définies dans les modules
sont destinées à être utilisées dans tout le classeur.
Le code placé dans une feuille est en principe propre à celle-ci.
L'option Private empêche d'y accéder hors de la feuille. On trouve
essentiellement dans les feuilles des procédures
événementielles :Private Sub Worksheet_Change(),BeforeDoubleClick,...

JB



Une fonction
On 29 jan, 19:41, "luck82" wrote:
Merci beaucoup JB; le code marche supers bien.

PS: Actuellement en plien apprentissage du VBA, je voudrai savoir ce que
deviendrai les lignes:
Sub essai() et For Each n In ActiveWorkbook.Names si au lieu de mettre le
code dans un module je le mets dans un objet feuil.
Désolais pour cette question certainement évidente mais j'ai du mal à voire
les differences entre module, objet feuil, private sub, const sub, sub .. . .

Codialement.

"JB" a écrit dans le message denews:117009116
Bonjour,

http://cjoint.com/?bDssmcp5nS

Sub essai()
For Each n In ActiveWorkbook.Names
Range(n.Name).BorderAround Weight:=xlMedium
Next n
End Sub

aaaa þuil2!$B$5:$C$10
kkk ÞCALER(Feuil2!$F$1;;;NBVAL(Feuil2!$F:$F))
xxx þuil1!$B$3:$C$6
yyy þuil1!$E$6:$G$10
zzz ÞCALER(Feuil1!$I$1;;;NBVAL(Feuil1!$I:$I))

Cordialement JB


Avatar
MichDenis
Légère correction, car la procédure doit aussi tenir compte
des noms définis localement au niveau d'une feuille :

'----------------------------
Sub test()
Dim Plg As String
For Each N In ThisWorkbook.Names
Plg = Replace([N], "=", "")
If Left(Plg, 1) = "!" Then Plg = N.Parent.Name & Plg
If TypeOf Evaluate(Plg) Is Range Then
Evaluate([Plg]).BorderAround xlContinuous, xlThick
End If
Next
End Sub
'----------------------------



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

Tu peux utiliser ceci : Tu peux le placer dans un
module standard ou un module feuille.

Si tu boucle sur l'ensemble des "noms" de ton classeur,
tu dois d'abord t'assurer dans ta procédure que tous
tes noms sont des plages de cellules, nom des formules
ou des constantes.

'--------------------------
Sub test()
Dim Plg As String
For Each n In ThisWorkbook.Names
Plg = Replace([n], "=", "")
If TypeOf Evaluate(Plg) Is Range Then
Range(Plg).BorderAround xlContinuous, xlThick
End If
Next
End Sub
'--------------------------


"luck82" a écrit dans le message de news:
%
Bonjour;
J'ai nommées des plages de cellules (avec excel97) et je voudrai faire un
programme en VBA qui boucle sur ma collection ( de plages nommées).

Je m'explique: il faudrait que la macro recherche la premiere plage nommée
sélectionne les cellules correspondante et applique un format bordure puis
passe à la plage nommée suivante... .
Difficulté supplementaire: les plages nommées sont des plages dynamiques.
J'ai bien trouvé une macro mais elle marche uniquement avec des plages
statique du style Toto=$A$1:$A$10

Voila, j'ai beau chercher mais là je n'y arrive pas.
Si quelqu'un à une idée! Merci par avance; ca m'évitera une nuit blanche de
plus.
Avatar
luck82
Merci pour la contribution de tous.

La macro de JB correspond parfaitement à mon besion.

Bonne soirée à tous.