[VBA] Comme prendre des valeurs d'un tableau
Alatorn
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- [VBA] Comme prendre des valeurs d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
3 réponses
Bonjour,
Tu peux aussi utiliser un tableau variant :
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
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
Salut Alatorn,
petit truc :
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 :
Je te laisse la satisfaction de terminer par toi-même.
A suivre...
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...