[RESOLU] Remplir un array

bbb38

XLDnaute Accro
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
 

Pièces jointes

  • Bernard.xlsm
    20.4 KB · Affichages: 69
  • Bernard.xlsm
    20.4 KB · Affichages: 87
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Remplir un array

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

[edit] c'est corrigé
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Remplir un array

Bonjour à tous, @Misange :), Dans ton dernier exemple, le fait d'utiliser
VB:
Tblo = Sheets("Feuil1").Range("A1:A100").Value
après le Redim, écrase le dit redim. Pour le vérifier il suffit d'utiliser
VB:
Debug.Print UBound(Tblo, 1)
Cordialement
 

bbb38

XLDnaute Accro
Re : Remplir un array

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
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 462
Membres
103 222
dernier inscrit
2BS