[RESOLU] Remplir un array

  • Initiateur de la discussion Initiateur de la discussion bbb38
  • Date de début Date de début

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 !

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

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

Discussions similaires

Réponses
16
Affichages
453
  • Question Question
Microsoft 365 Userform recherche
Réponses
10
Affichages
843
Retour