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

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

5 réponses
Avatar
pierre.archambault
Bonjour =E0 tous,

J'ai besoin de cr=E9er un ou plusieurs noms de plages comportant des
cellules qui peuvent ne pas =EAtre contigu=EBs. Pour ce faire, j'utilise
une boucle qui me permet de cr=E9er une chaine de caract=E8res avec les
adresses de chaque cellule qui doit =EAtre inclue dans la plage.

Voici un bout de code qui illustre le principe:

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

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

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

ActiveWorkbook.Names.Add Name:=3D"Plage", RefersToR1C1:=3DMaPlage
'----------------------------------------------

Mon probl=E8me est que la plage n'est pas cr=E9=E9e. Je ne sais pas si cela
d=E9pend de ce fait mais la chaine en question peut comporter des
milliers de caract=E8res, car la variable NombreDeDossiers peut avoir
une valeur =E9norme.

Y a-t-il une autre fa=E7on de proc=E9der ?

Merci

Pierre

5 réponses

Avatar
isabelle
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


Avatar
Archampi
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 -



Avatar
isabelle
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 -







Avatar
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 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 -





Avatar
Archampi
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 wrote:
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 -