Bonjour le forum,
Sur le site excelabo, j’ai trouvé ce code pour remplir un array. Lors de l’exécution de celui-ci, j’ai l’erreur suivante « Erreur de compilation – Impossible d’affecter à un tableau ». Pouvez m’aider à trouver mon erreur ?
Avec mes remerciements,
Cordialement,
Bernard
Bonjour,
Il y a effectivement une erreur sur excelabo que je corrigerai.
En fait c'est plus sioux que cela :
quand on écrit
Tblo = Sheets("Feuil1").Range("A1:A100").Value
par défaut, excel/VBA dimensionne implicitement l'array (1 to 100, 1 to 1)
Si on veut malgré tout préciser les dimensions il faut le faire en deux temps :
Code:
Sub test()
Dim Tblo
ReDim Tblo(1 To 100, 1 To 1)
Tblo = Sheets("Feuil1").Range("A1:A100").Value
Debug.Print Tblo(50, 1) 'pratique pour vérifier si on a bien mis un truc dans le tableau...)
End Sub
On peut d'ailleurs fort bien "surdimensionner" l'array pour prévoir d'y ajouter autre chose, (même si la raison pour le faire à l'avance ne me saute pas aux yeux...)
Code:
Sub test()
Dim Tblo
ReDim Tblo(1 To 200, 1 To 1)
Tblo = Sheets("Feuil1").Range("A1:A100").Value
Debug.Print Tblo(100, 1)
End Sub
en revanche on ne peut pas le "sousdimensionner".
En pratique c'est vrai que pour passer d'une feuille à un array on ne dimensionne pas. Je l'avais écrit à des fins pédagogiques qui font juste le résultat inverse de celui escompté je corrige.
A noter, tu n'as pas besoin d'utiliser option base1 quand tu travailles avec des arrays construits à partir d'une feuille, c'est implicite et obligatoire. Un array construit à partir d'une feuille démarre toujours à 1 et pas à 0
Bonjour le forum,
Mes sincères remerciements à Camarchepas, Misange, Elfgé pour leurs réponses.
Misange : Un grand merci pour tes explications, et félicitations pour les tutoriels que tu as rédigés sur Excelabo.
Cordialement,
Bernard