Chargement d'un tableau par une plage de cellule en VBA

Bonjour,

Débutant, je suis le cours VBA, chapitre 10 sur les tableaux, j'apprends qu'il est possible de charger un tableau depuis une plage de cellules :

dim tableau()

tableau = Range("A1:A6")

Or j'ai essayé et je ne comprends pas pourquoi j'ai toujours une erreur lorsque je veux relire mon tableau.

Ci- dessous voici mon petit test :

Sub test_tab()
Dim toto(), titi(), i As Byte
Sheets("Feuil1").Activate
Valeurs = Array("A", "B", "C", "D", "E", "F")
For i = 0 To 5
Range("A" & i + 1) = Valeurs(i)
Next i

'chargement de titi par boucle donc indice choisi de 0 à 5
ReDim titi(6)
For i = 0 To 5
titi(i) = Cells(i + 1, 1)
Next i
MsgBox titi(1) ' resultat ok "B"
MsgBox Join(titi, ",") ' resultat ok "A,B,C,D,E,F,"

'chargement de toto par plage donc indice de 1 à 6
toto = Range("A1:A6")

MsgBox toto(1) ' PB : l'indice n'appartient pas à la selection (ici, l'indice est le chiffre 1)
' ' toto n'est-il pas reconnu comme tableau ?
MsgBox Join(toto, ";")
End Sub

Edit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois

Merci pour votre aide, ca a l'air tout simple, qu'y a -t-il donc que je n'ai pas compris ?

Bonjour Gilp44 et

Une petite aide sur les tableau ici https://www.excel-pratique.com/fr/vba/tableaux_vba

Un tableau commence toujours par l'indice 0, sauf si l'on met en entête de module

Option Base 1

https://learn.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/option-base-stat...

Nota : merci de mettre les codes donnés entre balises avec le bouton

image

A+

Hello,

A noter qu'il n'est pas utile d'iterer les valeurs d'un tableau (contrairement à ce qu'indique le tuto).

Tu peux faire :

range(cells(1,1),cells(6,1)) = Worksheetfunction.Transpose (valeurs)

pour copier ton tableau directement sur la plage A1:A6

par contre non toto n'est pas typé dans ton code et par conséquent il sera de type variant

il contiendra donc un tableau à deux dimensions dont il faut que tu précises la ligne et la colonne (1,1 ici)

Merci WonderAleph,

Effectivement, j'apprends donc que le tableau (Variant) sera de 2 dimensions alors que je ne charge dedans qu'une colonne.

(avec Excel + VBA, je n'ai pas fini d'apprendre ! )

Merci pour ton aide.

Rechercher des sujets similaires à "chargement tableau plage vba"