Sélection colonne dans tableau
Bonjour le forum, voici mon problème :
"n" prend la valeur du mois en cours en "C1"
mais quand je met ce code :
Range("Tableau1[[#All],[n]]").Select, "n" n'est pas reconnu. Auriez vous une idée? Merci.
Voici le code:
Dim i As Integer, n As String
n = Range("C1").Value
With [Tableau1]
For i = 2 To .Columns.Count
If .Cells(0, i).Value = Range("C1").Value Then
Range("Tableau1[[#All],[n]]").SelectBonsoir,
Quel mastic !
n est une variable. Ce n'est pas une référence de cellule, donc la notation dite compacte (entre crochets) ne saurait être utilisée.
De façon générale, on code en VBA en utilisant une syntaxe VBA, et non de la syntaxe Excel !
Dans ton code (une meilleure indentation serait appréciable) :
[Tableau1] qui désigne un tableau Excel (c'est un objet ListObject), fonctionne parce que Excel insère automatiquement le nom du tableau dans les noms du classeur et que ce nom correspond aux données du tableau (ligne d'en-tête exclue). Le nom est utilisable en VBA comme les autres noms de plages.
Ensuite tu démarres ta boucle i = 2, tu sautes donc la première colonne de données, puis tu testes la cellule (0, i), cest à dire la cellule d'en-tête de la colonne...
Là tu compares à Range("C1") (sans qualificateur d'objet, ce que je réprouves !
Pour la suite si tu veux utiliser les éléments de tableau en VBA, tu passes par ListObject avec une syntaxe VBA, mais en tout état de cause tu n'en as pas besoin pour t'intéresser à la colonne (?) Je ne vois pas ce que tu veux faire parce que cela s'interrompt, mais il est sûr que le Select est de trop : on n'a JAMAIS besoin de sélectionner pour faire quoi que ce soit ! C'est juste mettre un boulet de plomb au pieds de VBA pour l'empêcher d'être rapide !!!
Cordialement.