plage nommée en paramétre

Le
Le Nordiste
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
hasco
Le #4463461
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




Daniel
Le #4463391
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" 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
MichDenis
Le #4463361
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"
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
Le Nordiste
Le #4463291
MichDenis c'est bien ta solution la plus simple.


Merci pour votre aide Daniel et Hasco,

Le Nordiste
Publicité
Poster une réponse
Anonyme