[VBA] Comme prendre des valeurs d'un tableau

Fermé
Alatorn Messages postés 1 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 6 juin 2008 - 6 juin 2008 à 17:48
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 7 juin 2008 à 11:03
Bonjour,
Je n'arrive pas à prendre les valeurs d'un tableau sur excel via un programme VBA.

Je m'explique, je possede 2 tableaux que l'utilisateur complete ( des tableax pouvant aller au maximum largeur = longuer = 7 (en partant de 1) )

Je vois pas comment je peux forcer VBA a prendre ce qu'il y a dans le tableau et à le lire

Si on prend un tableau isolé ( vu que pour le 2 ieme c'est le même probleme)

J'ai commencé par le tracé sux excel et apres je lui ai attribué un nom (Post)

La le seul moyen que j'ai trouvé consite à faire ca :

Post(0, 0) = Range("B4")
Post(0, 1) = Range("C4")
Post(0, 2) = Range("D4")
Post(0, 3) = Range("E4")
Post(0, 4) = Range("F4")
Post(0, 5) = Range("G4")
Post(0, 6) = Range("H4")
Post(1, 0) = Range("B5")
Post(1, 1) = Range("C5")
Post(1, 2) = Range("D5")
Post(1, 3) = Range("E5")
Post(1, 4) = Range("F5")
Post(1, 5) = Range("G5")
Post(1, 6) = Range("H5")
Post(2, 0) = Range("B6")
Post(2, 1) = Range("C6")
Post(2, 2) = Range("D6")
Post(2, 3) = Range("E6")
Post(2, 4) = Range("F6")
Post(2, 5) = Range("G6")
Post(2, 6) = Range("H6")
Post(3, 0) = Range("B7")
Post(3, 1) = Range("C7")
Post(3, 2) = Range("D7")
Post(3, 3) = Range("E7")
Post(3, 4) = Range("F7")
Post(3, 5) = Range("G7")
Post(3, 6) = Range("H7")
Post(4, 0) = Range("B8")
Post(4, 1) = Range("C8")
Post(4, 2) = Range("D8")
Post(4, 3) = Range("E8")
Post(4, 4) = Range("F8")
Post(4, 5) = Range("G8")
Post(4, 6) = Range("H8")
Post(5, 0) = Range("B9")
Post(5, 1) = Range("C9")
Post(5, 2) = Range("D9")
Post(5, 3) = Range("E9")
Post(5, 4) = Range("F9")
Post(5, 5) = Range("G9")
Post(5, 6) = Range("H9")
Post(6, 0) = Range("B10")
Post(6, 1) = Range("C10")
Post(6, 2) = Range("D10")
Post(6, 3) = Range("E10")
Post(6, 4) = Range("F10")
Post(6, 5) = Range("G10")
Post(6, 6) = Range("H10")


Forcement pas tres pratique donc je suppose qu'on doit pouvoir utiliser 2 boucles pour mais je vois pas les instructions


For i = 1 to 7
For j = 1 to 7

Mais apres je vois pas .......

Next J
i = i+1
Nex i

Si vous pouviez maider ...

Merci d'avance

Alatorn
A voir également:

3 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
7 juin 2008 à 09:41
Bonjour,

Tu peux aussi utiliser un tableau variant :
dim tabl 'ne pas spécifier le type ni les dimensions
tabl = range("A1:C4")

et c'est fini...
Attention, les indices du tableau commencent à 1.
tabl(1,2) = B1, tabl(3,3)=C3, etc

A l'inverse pour remplir les cellules:
range("A1:C4") = tabl

eric
1
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
7 juin 2008 à 08:57
Salut Alatorn,
petit truc :
Range("B4").Offset(1, 0).Value

est la valeur de la cellule décalée de 1 ligne et 0 colonne par-rapport à B4 (c'est-à-dire B5)

Attention :
à moins d'avoir précisé Option Base 1, un tableau commence à 0 (comme tu l'avais d'ailleurs bien pris en compte au début). De plus, avec For ... Next, l'incrémentation de fait toute seule, il ne faut surtout pas rajouter i = i + 1.
Tes boucles seront donc :
For i = 0 To 6
    For j = 0 To 6
        Post(i,j) = .....
    Next j
Next i

Je te laisse la satisfaction de terminer par toi-même.
A suivre...
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
7 juin 2008 à 10:49
Merci Eric !
Comme quoi on peut s'enquiquiner pendant des années faute de savoir les choses simples !
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
7 juin 2008 à 11:03
De rien ;-)
Ceci dit Alatorn a tout interet à se pencher et s'entrainer sur les boucles, ce qui est le B.A.BA
eric
0