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

plage nommée en paramétre

4 réponses
Avatar
Le Nordiste
Bonjour,

J'ai un classeur dont une feuille originale est copi=E9e n fois selon
besoin.
Chacune des copies de la feuille originale est num=E9rot=E9e 'MaFeuille_1,
MaFe..._2, MaF...

Sur la feuille originale des cellules dont une pour l'exemple traite
de 'service'.
Cette cellule est nomm=E9e 'Service_0'

Sur 'MaFeuille_1' la m=EAme cellule est nomm=E9e 'Service_1'
Sur 'MaFeuille_2' la m=EAme cellule est nomm=E9e 'Service_2'
.=2E.

Je veux r=E9aliser une routine commune pour les n feuilles recopi=E9es,
en passant les noms de plage en param=E9tre :

Sub RoutineCommune (Service_1 as range )
...
Set plageService =3D Range(Service_0) <=3D=3D C'est ici o=F9
=E7a coince


Mon Pb : Comment faire pour passer une plage nomm=E9e en parametre ?

Remerciements anticip=E9s.
Le Nordiste

4 réponses

Avatar
hasco
Le type du paramètre passé à la routine doit être de type string

Par exemple en supposant deux plage Nommées "Service_0" à "Service_2"

Sub test()
Dim Nom As String
Dim i As Integer

For i = 0 To 2
Nom = "Service_" & i
RoutineCommune (Nom)
Next i
End Sub

Sub RoutineCommune(NomPlage As String)

MsgBox Range(NomPlage).Value

End Sub




Bonjour,

J'ai un classeur dont une feuille originale est copiée n fois selon
besoin.
Chacune des copies de la feuille originale est numérotée 'MaFeuille_1,
MaFe..._2, MaF...

Sur la feuille originale des cellules dont une pour l'exemple traite
de 'service'.
Cette cellule est nommée 'Service_0'

Sur 'MaFeuille_1' la même cellule est nommée 'Service_1'
Sur 'MaFeuille_2' la même cellule est nommée 'Service_2'
....

Je veux réaliser une routine commune pour les n feuilles recopiées,
en passant les noms de plage en paramétre :

Sub RoutineCommune (Service_1 as range )
...
Set plageService = Range(Service_0) <== C'est ici où
ça coince


Mon Pb : Comment faire pour passer une plage nommée en parametre ?

Remerciements anticipés.
Le Nordiste




Avatar
Daniel
Bonjour.
Tu peux utiliser la macro suivante, sans passage de paramètre :

Sub test()
Dim sh As Worksheet
For Each sh In Sheets
If Left(sh.Name, 10) = "MaFeuille_" Then
Range("A1").Name = "Service_" & _
Right(sh.Name, Len(sh.Name) - 10)
End If
Next sh
End Sub

Cordialement.
Daniel
"Le Nordiste" a écrit dans le message de
news:
Bonjour,

J'ai un classeur dont une feuille originale est copiée n fois selon
besoin.
Chacune des copies de la feuille originale est numérotée 'MaFeuille_1,
MaFe..._2, MaF...

Sur la feuille originale des cellules dont une pour l'exemple traite
de 'service'.
Cette cellule est nommée 'Service_0'

Sur 'MaFeuille_1' la même cellule est nommée 'Service_1'
Sur 'MaFeuille_2' la même cellule est nommée 'Service_2'
...

Je veux réaliser une routine commune pour les n feuilles recopiées,
en passant les noms de plage en paramétre :

Sub RoutineCommune (Service_1 as range )
...
Set plageService = Range(Service_0) <== C'est ici où
ça coince


Mon Pb : Comment faire pour passer une plage nommée en parametre ?

Remerciements anticipés.
Le Nordiste
Avatar
MichDenis
As-tu essayé d'utiliser des "Plages nommées" localement c'est à dire au niveau de la feuille
de calcul plutôt qu'au niveau du classeur

Lorsque tu crées ces "NOMS", il s'agit que tu ajoutes à la déclaration de leur nom,
le nom de la feuille où ils sont créés.
Exemple de déclaration d'un nom au moment de la création : Feuil1!toto

Lorsque tu feras une copie dans le même classeur, la plage nommée conservera son nom
mais modifiera automatiquement le nom de la feuille à laquelle il fait référence

Ce type de code sera bon pour extraire la référence à la plage nommée
pour tous les noms locaux sur toutes les feuilles

x est une variable qui reçoit le nom de la plage nommées
de la feuille "Bozo" dans l'exemple suivant

With Worksheets("Bozo")
x = Replace(.Range(.Name & "!toto").Name, "=", "")
End With





"Le Nordiste" a écrit dans le message de news:

Bonjour,

J'ai un classeur dont une feuille originale est copiée n fois selon
besoin.
Chacune des copies de la feuille originale est numérotée 'MaFeuille_1,
MaFe..._2, MaF...

Sur la feuille originale des cellules dont une pour l'exemple traite
de 'service'.
Cette cellule est nommée 'Service_0'

Sur 'MaFeuille_1' la même cellule est nommée 'Service_1'
Sur 'MaFeuille_2' la même cellule est nommée 'Service_2'
...

Je veux réaliser une routine commune pour les n feuilles recopiées,
en passant les noms de plage en paramétre :

Sub RoutineCommune (Service_1 as range )
...
Set plageService = Range(Service_0) <== C'est ici où
ça coince


Mon Pb : Comment faire pour passer une plage nommée en parametre ?

Remerciements anticipés.
Le Nordiste
Avatar
Le Nordiste
MichDenis c'est bien ta solution la plus simple.


Merci pour votre aide Daniel et Hasco,

Le Nordiste