Excel - sélection de plages multiples avec Range()
David
-
David -
David -
Bonjour,
J'ai besoin de sélectionner de nombreuses zones d'une feuille pour changer la couleur de fond.
Pour cela, j'ai créé une macro où je sélectionne des plages nommées :
Mais si la chaîne "zone1, ...zoneX" dépasse 255 caractères, Excel affiche une erreur à l'exécution de la macro :
Ma question : y'a-t-il un moyen pour que Range traite une chaîne de plus de 255 caractères de manière à ne faire qu'une seule sélection ? ou suis-je obligé de procéder en plusieurs fois et donc de boucler sur plusieurs sélections ?
J'ai besoin de sélectionner de nombreuses zones d'une feuille pour changer la couleur de fond.
Pour cela, j'ai créé une macro où je sélectionne des plages nommées :
Range("zone1, zone2, ... zoneX").Select
Mais si la chaîne "zone1, ...zoneX" dépasse 255 caractères, Excel affiche une erreur à l'exécution de la macro :
erreur 1004 : la méthode 'range' de l'objet '_global' a échouée
Ma question : y'a-t-il un moyen pour que Range traite une chaîne de plus de 255 caractères de manière à ne faire qu'une seule sélection ? ou suis-je obligé de procéder en plusieurs fois et donc de boucler sur plusieurs sélections ?
A voir également:
- Excel vba union multiple ranges
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Ranger par ordre alphabétique excel - Guide
2 réponses
Bonjour,
Je ne comprend pas trop, une sélection sur excel est illimitée.
Pourriez-vous nous donner le code exact?
Cordialement.
Je ne comprend pas trop, une sélection sur excel est illimitée.
Pourriez-vous nous donner le code exact?
Cordialement.
Bonjour,
Je pense avoir trouvé : il semble bien qu'il y ait une limite de 255 caractères pour les strings utilisées en tant que paramètre d'une méthode (mais pas des sub ...) : pour des exemples, faire une recherche sur "excel vba 255 character limit parameter"
Le contournement est d'utiliser Union(Range("zone1")[, Range("zone2"...]) pour construire un Range comme dans mon cas.
Merci à Kuartz :)
Je pense avoir trouvé : il semble bien qu'il y ait une limite de 255 caractères pour les strings utilisées en tant que paramètre d'une méthode (mais pas des sub ...) : pour des exemples, faire une recherche sur "excel vba 255 character limit parameter"
Le contournement est d'utiliser Union(Range("zone1")[, Range("zone2"...]) pour construire un Range comme dans mon cas.
Merci à Kuartz :)
ça, ça marche (la string cellules fait 250 caractères de long) :
ça, ça ne marche pas (la string cellules fait 259 caractères de long) :
J'aurai pu changé le nom des zones en z_1, ... , z_30 mais c'est long
J'ai contourné le problème en faisant 2 sélections au lieu d'une (et donc en lançant 2 traitements au lieu d'un)
Où avez-vous défini les zones?
La définition d'une string de plus de 255 c ne pose aucun problème (voir le second exemple). c'est uniquement le fait d'utiliser range(cellules) avec cellules > 255 c qui plante que ce soit en passant par une string ou en direct (range("zone1 ... zone30")).
(PS : j'ai aussi essayé de couper la chaine en la concaténant avec des &)
J'ai fait une petite recherche sur google pour voir si on peut fusionner des zone.
On ne trouve rien la dessus, mais après j'ai chercher si on pouvait fusionner des objets range. et voila
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa213609(v=office.11)?redirectedfrom=MSDN
J'ai trouvé la méthode Union.
Donc