OVH Cloud OVH Cloud

Indiçage de tableaux

5 réponses
Avatar
Stéphane Santon
Bonjour,

Sub es1()
Dim lvTableHeads, i&, lsHead$

lvTableHeads = Array( _
Array("IdPoste", "IdEvent", "NoComportement", "DateHeure",
"Valeur", "Qualite"), _
Array(0, 0, 0, 0, 0, 0))

For i = 1 To 6
lsHead = lvTableHeads(1, i) ' <<<<<<<<<<<<<<<<<<
Next i

End Sub


Si je marque lsHead = lvTableHeads(1, i)
-> alors Erreur 'Indice n'appartient pas à sélection dès i=1

Si je marque lsHead = lvTableHeads(1)(i)
-> OK

Où est la nuance ? Quelle doit être la syntaxe de l'affectation de
constatnte pour indicer en (1, i)


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

5 réponses

Avatar
Pascal Engelmajer
Salut,
le tableau n'a qu'une dimension
tab0=Array( tab1, tab2)


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Stéphane Santon" a écrit dans le message de
news:
Bonjour,

Sub es1()
Dim lvTableHeads, i&, lsHead$

lvTableHeads = Array( _
Array("IdPoste", "IdEvent", "NoComportement", "DateHeure",
"Valeur", "Qualite"), _
Array(0, 0, 0, 0, 0, 0))

For i = 1 To 6
lsHead = lvTableHeads(1, i) ' <<<<<<<<<<<<<<<<<<
Next i

End Sub


Si je marque lsHead = lvTableHeads(1, i)
-> alors Erreur 'Indice n'appartient pas à sélection dès i=1

Si je marque lsHead = lvTableHeads(1)(i)
-> OK

Où est la nuance ? Quelle doit être la syntaxe de l'affectation de
constatnte pour indicer en (1, i)


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime


Avatar
J-Dan
bonjour Stephane,

est-ce que cette macro ne ferait pas l'affaire ?

Sub test()
Dim i As Integer
Dim lvTableHeads As Variant
Dim lsHead(5, 5) As Variant

lvTableHeads = Array
("IdPoste", "IdEvent", "NoComportement", _
"DateHeure", "Valeur", "Qualite")

For i = 0 To 5
lsHead(i, 0) = lvTableHeads(i)
lsHead(i, 1) = 0
Next i

Range(Cells(1, 1), Cells(1, 1).Offset(UBound(lsHead, _
1), 1)) = lsHead ' ** pour visualiser ton tableau **
End Sub

Attention, je ne crois pas qu'on puisse mettre de
chiffres dans le nom d'une macro (sous reserve)

bon courage


-----Message d'origine-----
Bonjour,

Sub es1()
Dim lvTableHeads, i&, lsHead$

lvTableHeads = Array( _
Array
("IdPoste", "IdEvent", "NoComportement", "DateHeure",

"Valeur", "Qualite"), _
Array(0, 0, 0, 0, 0, 0))

For i = 1 To 6
lsHead = lvTableHeads(1, i) ' <<<<<<<<<<<<<<<<<<
Next i

End Sub


Si je marque lsHead = lvTableHeads(1, i)
-> alors Erreur 'Indice n'appartient pas à sélection dès
i=1


Si je marque lsHead = lvTableHeads(1)(i)
-> OK

Où est la nuance ? Quelle doit être la syntaxe de
l'affectation de

constatnte pour indicer en (1, i)


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas
être rejeté.


Cordialement, Stéphane ***
http://www.team-santonum.com

Loisirs, nature, arts, technologie : accueil en
Charente-Maritime

.



Avatar
J-Dan
precision,

Attention, je ne crois pas qu'on puisse mettre de
chiffres dans le nom d'une macro (sous reserve)


En tout cas Es1, A1, AB36 semble ambigu (Excel 2000),
Test1, toto4 sont naturellement acceptes

bon courage

Avatar
Stéphane Santon
Bonjour,

est-ce que cette macro ne ferait pas l'affaire ?


Oui ça fait l'affaire, je me suis débrouillé comme ça. Merci.

Mais n'y a-t-il pas une syntaxe pour affecter directement des constantes
à un tableau à 2 dimensions ???

Attention, je ne crois pas qu'on puisse mettre de
chiffres dans le nom d'une macro (sous reserve)


Ah oui, j'avais pas pensé que Es1 (essai N° 1) pouvait être le nom d'une
cellule ...


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

Avatar
Daniel.M
Salut Stéphane,

Mais n'y a-t-il pas une syntaxe pour affecter directement des constantes
à un tableau à 2 dimensions ???



En VBA, j'en connais pas mais tu peux initialiser un tableau comme tu l'as fait
pour exécuter ensuite un Transpose() :-)

Sub Essai1()
Dim lvTableHeads As Variant, VTemp As Variant
Dim i&, lsHead$, lsNum As Integer

lvTableHeads = Array( _
Array("IdPoste", "IdEvent", "NoComportement", "DateHeure", "Valeur", "Qualite"),
_
Array(0, 1, 2, 3, 4, 5) )

' Attention : voici la double vrille ;-))
VTemp = Application.Transpose(lvTableHeads)

Cells(1, 1).Resize(1 + UBound(VTemp) - LBound(VTemp), 2) = VTemp

For i = LBound(VTemp, 1) To UBound(VTemp, 1)
lsHead = VTemp(i, 1)
lsNum = VTemp(i, 2)
Next i

End Sub

Salutations,

Daniel M.