Création d'un nom de plage (Cellules non contiguës)

Le
pierre.archambault
Bonjour à tous,

J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'utilise
une boucle qui me permet de créer une chaine de caractères avec les
adresses de chaque cellule qui doit être inclue dans la plage.

Voici un bout de code qui illustre le principe:

'-
Dim i as long
Dim MaPlage as String

For i = 1 to NombreDeDossiers 'Variable connue
MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i

MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)

ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'-

Mon problème est que la plage n'est pas créée. Je ne sais pas si cela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoir
une valeur énorme.

Y a-t-il une autre façon de procéder ?

Merci

Pierre
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
isabelle
Le #5177661
bonjour Pierre,

la longueur maximum du contenu des formules ne doit pas dépasser 1024 caractères

isabelle

Bonjour à tous,

J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'utilise
une boucle qui me permet de créer une chaine de caractères avec les
adresses de chaque cellule qui doit être inclue dans la plage.

Voici un bout de code qui illustre le principe:

'----------------------------------------------
Dim i as long
Dim MaPlage as String

For i = 1 to NombreDeDossiers 'Variable connue
MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i

MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)

ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'----------------------------------------------

Mon problème est que la plage n'est pas créée. Je ne sais pas si cela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoir
une valeur énorme.

Y a-t-il une autre façon de procéder ?

Merci

Pierre


Archampi
Le #5176011
Merci Isabelle,

Y a-t-il une autre façon de procéder selon toi?

Merci
Pierre


On 3 mar, 21:39, isabelle wrote:
bonjour Pierre,

la longueur maximum du contenu des formules ne doit pas dépasser 1024 ca ractères

isabelle




Bonjour à tous,

J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'utilise
une boucle qui me permet de créer une chaine de caractères avec les
adresses de chaque cellule qui doit être inclue dans la plage.

Voici un bout de code qui illustre le principe:

'----------------------------------------------
Dim i as long
Dim MaPlage as String

For i = 1 to NombreDeDossiers      'Variable connue
    MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i

MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)

ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'----------------------------------------------

Mon problème est que la plage n'est pas créée. Je ne sais pas si c ela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoir
une valeur énorme.

Y a-t-il une autre façon de procéder ?

Merci

Pierre- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



isabelle
Le #5176001
bonjour Pierre,

avec ton exemple je ne vois pas très bien car celle ci donne une plage de cellule contigue quelque soit la valeur de NombreDeDossiers,
mais il y aurait peut être une solution avec Union et Set.

isabelle

Merci Isabelle,

Y a-t-il une autre façon de procéder selon toi?

Merci
Pierre


On 3 mar, 21:39, isabelle wrote:
bonjour Pierre,

la longueur maximum du contenu des formules ne doit pas dépasser 1024 caractères

isabelle




Bonjour à tous,
J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'utilise
une boucle qui me permet de créer une chaine de caractères avec les
adresses de chaque cellule qui doit être inclue dans la plage.
Voici un bout de code qui illustre le principe:
'----------------------------------------------
Dim i as long
Dim MaPlage as String
For i = 1 to NombreDeDossiers 'Variable connue
MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i
MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)
ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'----------------------------------------------
Mon problème est que la plage n'est pas créée. Je ne sais pas si cela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoir
une valeur énorme.
Y a-t-il une autre façon de procéder ?
Merci
Pierre- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -







Archampi
Le #5175931
Bonjour Isabelle,

Je viens tout juste de trouver la solution. Je crois que cela devrait
fonctionner comme ça; je le teste.


Dim i as long
Dim MaPlage as String

'Colonne et Saut sont des variables connues (Saut= Nombre de lignes à
sauter)
For i = 1 to NombreDeDossiers 'Variable connue
MaPlage = MaPlage & Chr(64 + Colonne) & i * Saut & "C2,"
Next i
MaPlage = Left(MaPlage, Len(MaPlage) - 1)
Range(MaPlage).Select
ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=Selection

Pierre




On 4 mar, 08:57, isabelle wrote:
bonjour Pierre,

avec ton exemple je ne vois pas très bien car celle ci donne une plage d e cellule contigue quelque soit la valeur de NombreDeDossiers,
mais il y aurait peut être une solution avec Union et Set.

isabelle




Merci Isabelle,

Y a-t-il une autre façon de procéder selon toi?

Merci
Pierre

On 3 mar, 21:39, isabelle wrote:
bonjour Pierre,

la longueur maximum du contenu des formules ne doit pas dépasser 1024 caractères

isabelle




Bonjour à tous,
J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'utili se
une boucle qui me permet de créer une chaine de caractères avec le s
adresses de chaque cellule qui doit être inclue dans la plage.
Voici un bout de code qui illustre le principe:
'----------------------------------------------
Dim i as long
Dim MaPlage as String
For i = 1 to NombreDeDossiers      'Variable connue
    MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i
MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)
ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'----------------------------------------------
Mon problème est que la plage n'est pas créée. Je ne sais pas si cela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoir
une valeur énorme.
Y a-t-il une autre façon de procéder ?
Merci
Pierre- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -




- Afficher le texte des messages précédents -





Archampi
Le #5175501
Malheureusement, ça ne marche pas mieux...

Aussitôt que la chaine de caractères qui représente la plage à
sélectionner dépasse les 255 caractères...

Je ne sais plus quoi faire.

Merci quand même.

Pierre




On 4 mar, 09:41, Archampi
Bonjour Isabelle,

Je viens tout juste de trouver la solution. Je crois que cela devrait
fonctionner comme ça; je le teste.

Dim i as long
Dim MaPlage as String

'Colonne et Saut sont des variables connues (Saut= Nombre de lignes à
sauter)
For i = 1 to NombreDeDossiers      'Variable connue
     MaPlage = MaPlage & Chr(64 + Colonne) & i * Saut & "C2,"
Next i
MaPlage = Left(MaPlage, Len(MaPlage) - 1)
Range(MaPlage).Select
ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=Selection

Pierre

On 4 mar, 08:57, isabelle wrote:



bonjour Pierre,

avec ton exemple je ne vois pas très bien car celle ci donne une plage de cellule contigue quelque soit la valeur de NombreDeDossiers,
mais il y aurait peut être une solution avec Union et Set.

isabelle



Merci Isabelle,

Y a-t-il une autre façon de procéder selon toi?

Merci
Pierre

On 3 mar, 21:39, isabelle wrote:
bonjour Pierre,

la longueur maximum du contenu des formules ne doit pas dépasser 10 24 caractères

isabelle





Bonjour à tous,
J'ai besoin de créer un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas être contiguës. Pour ce faire, j'uti lise
une boucle qui me permet de créer une chaine de caractères avec les
adresses de chaque cellule qui doit être inclue dans la plage.
Voici un bout de code qui illustre le principe:
'----------------------------------------------
Dim i as long
Dim MaPlage as String
For i = 1 to NombreDeDossiers      'Variable connue
    MaPlage = MaPlage & "Feuil1!R" & i & "C2,"
Next i
MaPlage = "=" & Left(MaPlage, Len(MaPlage) - 1)
ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:=MaPlage
'----------------------------------------------
Mon problème est que la plage n'est pas créée. Je ne sais pas si cela
dépend de ce fait mais la chaine en question peut comporter des
milliers de caractères, car la variable NombreDeDossiers peut avoi r
une valeur énorme.
Y a-t-il une autre façon de procéder ?
Merci
Pierre- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -




- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -






Publicité
Poster une réponse
Anonyme