Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je me trouve confronté a un soucis avec une sélection de colonnes multiples.
Tout d'abord mon environnement :
VB:
Set TSV = Workbooks.Open("C:\#\Database\amazon.TSV")
Set amazon = TSV.Sheets(1)
Set deetaa = amazon.UsedRange
retsu = deetaa.Rows.Count
Set naiyou = deetaa.Range("A2:AU" & retsu)
Jusque la, rien de sorcier.
Mon objectif : sélectionner diverses colonnes (qui ne sont pas toujours contigües, évidemment) pour y faire diverses choses (couleurs, manipulation de chaines alphanumériques : remplacement/ajout/suppression) de mon tableau de données SANS la première ligne de titre (d’où ma dernière range "naiyou").
Et bien évidemment cette dernière me pose soucis.
Je vous liste ci-dessous les différentes combinaisons que j'ai essayé et leur résultat :
amazon.Columns("E:E,P: P").Interior.Color = RGB(100, 100, 100) ERR13
amazon.Range("E:E,P: P").Interior.Color = RGB(100, 100, 100) OK
deetaa.Columns("E:E,P: P").Interior.Color = RGB(100, 100, 100) ERR13
deetaa.Range("E:E,P: P").Interior.Color = RGB(100, 100, 100) OK/NOK : colorie la colonne MAIS sur toute la feuille (alors que deetaa est l'UsedRange)
naiyou.Columns("E:E,P: P").Interior.Color = RGB(100, 100, 100) ERR13
naiyou.Range("E:E,P: P").Interior.Color = RGB(100, 100, 100) ERR1004 !!
N'arrivant pas à trouver la bonne expression, je me tourne vers vous.
Merci pour votre aide m(_ _)m
Oui, effectivement, comme ca, c'est possible (j'y avais pensé mais c'est pénible a programmer) 😀
Je me demande pourquoi il n'est pas possible de faire une sélection multiple dans une range et avoir une formulation plus facile ou intuitive, respectant les ranges et leurs imbrications...
Je suis quand même étonné que deetaa.Range("E:E,P: P").Interior.Color colore toute la feuille si deetaa n'est que l'UsedRange. Vous devriez mettre un espion sur deetaa.Address(External:=True) pour voir.
Je suis quand même étonné que deetaa.Range("E:E,P: P").Interior.Color colore toute la feuille si deetaa n'est que l'UsedRange. Vous devriez mettre un espion sur deetaa.Address(External:=True) pour voir.
Je ne connais pas les espions non plus. Par contre, une précision : le "deetaa.Range("E:E,P: P").Interior.Color" colore seulement les 2 colonnes E et P, mais jusqu'en bas de la feuille (comme si j'avais écrit "amazon.Range("E:E,P: P").Interior.Color"). Alors qu'en faisant "deetaa.Columns("E:E").Interior.Color" ou bien "deetaa.Columns("E: P").Interior.Color", la coloration s’arrête bien a la limite de l'UserRange. Donc pourquoi "deetaa.Range("E:E,P: P")" ne se limite pas a l'UserRange et colore la colonne complète de la feuille ? Mystère.
Et en quoi est-ce déconseillé ? Je travaille avec des CSV de données pondu par un logiciel indépendant, donc je n'ai aucun risque d'erreur (il n'y a pas de données séparées, j'ai toujours un bloc calé en A1).
C'est curieux, ça me semble être un bogue dans Excel.
Lors d'un arrêt, vous pouvez examiner la valeur d'une expression sélectionnée par Alt+DU.
1000000 c'est un peu moins du nombre de lignes maxi d'une feuille.
Alt+D affiche le menu Débogage,
Alt+U exécute la commande Ajouter un espion…
Pourquoi spécifier moins que le nombre de ligne maxi de la feuille, puisque c'est ramené de toute façon au numéro de la dernière ligne de UsedRange ?
Mais si vous préférez vous pouvez remplacer amazon.[2:1000000], amazon.UsedRange
par amazon.Rows(2).Resize(amazon.UsedRange.Rows.Count - 1) mais ce n'est pas plus simple !
Je ne comprends pas un truc dans votre intersect. Vous mettez 3 ranges, alors que 2 seulement devraient suffire, non ? L'intersection des colonnes et de ma range "naiyou", c'est bien ce que je veux ; alors pourquoi mettre une range supplémentaire utilisant toutes les lignes ? J'avoue ne pas comprendre la logique.
Intersect accepte plus de 2 Range: il en détermine un qui représente la plus grande plage intégralement contenue dans toutes celles spécifiées. Mais si vous préférez décomposer en plusieurs instructions libre à vous. Surtout si vous avez aussi besoin ailleurs de Intersect(.[2:1000000], .UsedRange)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD