Problème de Columns dans vba Excel
Fermé
Jeunepadawan
-
17 août 2010 à 06:58
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 19 août 2010 à 19:18
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 19 août 2010 à 19:18
2 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
18 août 2010 à 08:03
18 août 2010 à 08:03
Bonjour,
Une plage de lignes s'écrit "2:5"
Une plage de colonnes s'écrit "B:E"
Donc tu devrais écrire :
Set TableauB = ActiveSheet.UsedRange.Columns("B:" & Chr(64 + ActiveSheet.UsedRange.Columns.Count))
pour transformer ton nombre en lettre.
Seulement à partir de AA tu vas être embété...
Utilise plutôt resize() :
Set TableauB = Range("B:B").Resize(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count - 1)
eric
Une plage de lignes s'écrit "2:5"
Une plage de colonnes s'écrit "B:E"
Donc tu devrais écrire :
Set TableauB = ActiveSheet.UsedRange.Columns("B:" & Chr(64 + ActiveSheet.UsedRange.Columns.Count))
pour transformer ton nombre en lettre.
Seulement à partir de AA tu vas être embété...
Utilise plutôt resize() :
Set TableauB = Range("B:B").Resize(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count - 1)
eric
Bonjour,
Il me semble que Columns ne prend par le chiffre, mais la lettre de la colonne.
Il me semble que Columns ne prend par le chiffre, mais la lettre de la colonne.
Wow! Il faudrait vraiment que je me relise ! C'est révoltant ! Bref...
Merci, cher Bacus, de ta réponse. Cependant, j'ai déjà essayé de remplacer le "2:" par un "b:" dans le cas de columns(...), mais lorsque j'essaye d'exécuter la macro, j'obtiens le message d'erreur : "Erreur d'exécution '13': Incompatibilité de type".
Par ailleurs, quelqu'un pourrait-il m'expliquer les règles de sélection des objets range. J'ai trouvé la première ligne sur Internet, et je dois avouer que l'écriture "2:" me laisse quelque peu perplexe... J'ai bien compris que cela servait à sélectionner la valeur servant de première borne à la sélection, mais pourquoi cette typographie ne fonctionne-t-elle pas avec la collection Columns...? Et pourquoi la seconde borne peut-elle être juste indiquée sous forme de nombre?
Voilà un infime échantillon des questions qui me taraudent en cette période d'initiation à la programmation, pauvre newbie que je suis.
Merci^^
Merci, cher Bacus, de ta réponse. Cependant, j'ai déjà essayé de remplacer le "2:" par un "b:" dans le cas de columns(...), mais lorsque j'essaye d'exécuter la macro, j'obtiens le message d'erreur : "Erreur d'exécution '13': Incompatibilité de type".
Par ailleurs, quelqu'un pourrait-il m'expliquer les règles de sélection des objets range. J'ai trouvé la première ligne sur Internet, et je dois avouer que l'écriture "2:" me laisse quelque peu perplexe... J'ai bien compris que cela servait à sélectionner la valeur servant de première borne à la sélection, mais pourquoi cette typographie ne fonctionne-t-elle pas avec la collection Columns...? Et pourquoi la seconde borne peut-elle être juste indiquée sous forme de nombre?
Voilà un infime échantillon des questions qui me taraudent en cette période d'initiation à la programmation, pauvre newbie que je suis.
Merci^^
19 août 2010 à 18:49
Bonjour et surtout merci pour ton explication. Mon erreur était donc de ne pas convertir en lettre le deuxième terme de sélection dans Columns(...).
La première solution que tu me propose correspond tout à fait à ce que je cherchais. En revanche, la deuxième pose un inconvénient: elle impose que le tableau commence en cellule A1, ce qui n'est pas forcément mon cas... Vous me direz, étant donné que la sélection du tableau avec UsedRange est définie en fonction de toutes les cellules "remplies" de la feuille, on a intérêt à commencer en première cellule. Mais bon, question de présentation^^
Quoi qu'il en soit, je te remercie une nouvelle fois de ta réponse.
Modifié par eriiic le 19/08/2010 à 19:20
Mais la 2nde solution n'a pas de limitation, le .resize élargit ta selection (ici la colonne B) de x colonnes. Tu démarres où tu veux avec la largeur que tu veux
eric