OVH Cloud OVH Cloud

Tableau(Array)

16 réponses
Avatar
ABED HADDOU
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parcourir la colone
A et trouvé l'occurrence de la chaîne de caractère "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C et D et mêtre ces deux
valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît disant
que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des correction dans
mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub

6 réponses

1 2
Avatar
ABED HADDOU
aprés la modification du code voila ce que j'ai obtenu
http://cjoint.com/?hummvo065y
merci bien JLuc si tu peut m'orienté.

Bonne journée

Abed_H



Tu as oublier de modifier le range de la 2eme boucle... :')
Sinon, ca marche

Re,Bonjour
ton code renvoi uniquement la première occurrence de la valeur cherchée
voi ça http://cjoint.com/?hult1oysNY

merci pour ton aide et bonne journée

Abed_H



Autant pour moi, anonymousA a raison :/ j'ai peut etre repondu un peu
vite.
Voila ce que, moi, j'utiliserais :

Dim Tablo()
nb = 0
For Each c In Range("A1:A20")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
If nb > 0 Then
Redim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If

Bonjour anonymousA

si j'utilse le mot clé ReDim sans Preserve j'obtient uniquement la dernière
occurrence du mot cherché.
comment faire pour obtenir les n occurnce du mot cherché et les affichées ?
merci par d'avance
Bonne journée.

Abed_H


Bonjour,

il me semble qu'il y a une confusion
Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)


En effet, ci-dessous, un extrait de l'aide d'Excel sur Redim
Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner
que la dernière dimension du tableau. Vous ne pouvez en aucun cas
modifier le nombre de dimensions.


Par ailleurs, l'exemple suivant permet de se rendre compte de ce qu'on
peut fair ou pas

1) sans le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
ne plantera pas

Dim MyArray() As Integer

ReDim MyArray(10, 20)
ReDim MyArray(10, 15)
ReDim MyArray(15, 15)

2) avec le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
plantera sur la dernière ligne car on tente de changer la limite de
la 1ere dimension ( donc pas la dernière) ce qui est interdit

Dim MyArray() As Integer

ReDim Preserve MyArray(10, 20)
ReDim Preserve MyArray(10, 15)
ReDim Preserve MyArray(15, 15)

A+

JLuc wrote:
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parcourir la
colone A et trouvé l'occurrence de la chaîne de caractère "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C et D et mêtre ces
deux valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît
disant que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des correction
dans mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub


Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)

Dim Tablo(1, 3)
i=1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
ReDim Preserve Tablo(i, 3)
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c

Ceci devrait convenir, pas tester

--
JLuc







--
JLuc







--
JLuc











Avatar
ABED HADDOU
Re,Bonjour anonymousA
merci beacoup d'avoir penché à mon problème,le code que vous m'avais donné
ne répond pas exactement à ce que je cherchais.
bonne journée

Abed_H



Bonjour,

Pas forcément l'exercice le + complet sur les tableaux mais ca résoud
ce que tu essayes de faire

Sub test()

Dim Tablo() As String

I = 0
For Each c In Range("A1:A20")
If c.Value = "D1405" Then I = I + 1
Next

ReDim Tablo(I - 1, 3)

I = 0

For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For J = 1 To 3
Tablo(I, J) = c.Offset(, J)
Next
I = I + 1
End If
Next c

Range("H5").Resize(I, J).Value = Tablo

End Sub

A+

ABED HADDOU wrote:
Re,Bonjour
ton code renvoi uniquement la première occurrence de la valeur cherchée
voi ça http://cjoint.com/?hult1oysNY

merci pour ton aide et bonne journée

Abed_H



Autant pour moi, anonymousA a raison :/ j'ai peut etre repondu un peu
vite.
Voila ce que, moi, j'utiliserais :

Dim Tablo()
nb = 0
For Each c In Range("A1:A20")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
If nb > 0 Then
Redim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If

Bonjour anonymousA

si j'utilse le mot clé ReDim sans Preserve j'obtient uniquement la dernière
occurrence du mot cherché.
comment faire pour obtenir les n occurnce du mot cherché et les affichées ?
merci par d'avance
Bonne journée.

Abed_H


Bonjour,

il me semble qu'il y a une confusion
Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)


En effet, ci-dessous, un extrait de l'aide d'Excel sur Redim
Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner
que la dernière dimension du tableau. Vous ne pouvez en aucun cas
modifier le nombre de dimensions.


Par ailleurs, l'exemple suivant permet de se rendre compte de ce qu'on
peut fair ou pas

1) sans le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
ne plantera pas

Dim MyArray() As Integer

ReDim MyArray(10, 20)
ReDim MyArray(10, 15)
ReDim MyArray(15, 15)

2) avec le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
plantera sur la dernière ligne car on tente de changer la limite de
la 1ere dimension ( donc pas la dernière) ce qui est interdit

Dim MyArray() As Integer

ReDim Preserve MyArray(10, 20)
ReDim Preserve MyArray(10, 15)
ReDim Preserve MyArray(15, 15)

A+

JLuc wrote:
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parcourir la
colone A et trouvé l'occurrence de la chaîne de caractère "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C et D et mêtre ces
deux valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît disant
que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des correction
dans mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub


Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)

Dim Tablo(1, 3)
i=1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
ReDim Preserve Tablo(i, 3)
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c

Ceci devrait convenir, pas tester

--
JLuc







--
JLuc















Avatar
JLuc
Voila le fichier precedent ou j'ai modifie seulement le range :
http://cjoint.com/?huogzPcKnX

Sub ttv()
Dim Tablo()
nb = 0
For Each c In Range("A1:A30")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
MsgBox nb
If nb > 0 Then
ReDim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A30")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(1 To nb, 1 To 3)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If
Range(Cells(15, 9), Cells(17, 11)).Value = Tablo
End Sub

--
JLuc
Avatar
anonymousA
Et en quoi ne fait-il pas exactement ce que tu souhaitais ?

ABED HADDOU wrote:
Re,Bonjour anonymousA
merci beacoup d'avoir penché à mon problème,le code que vous m'avai s donné
ne répond pas exactement à ce que je cherchais.
bonne journée

Abed_H



Bonjour,

Pas forcément l'exercice le + complet sur les tableaux mais ca réso ud
ce que tu essayes de faire

Sub test()

Dim Tablo() As String

I = 0
For Each c In Range("A1:A20")
If c.Value = "D1405" Then I = I + 1
Next

ReDim Tablo(I - 1, 3)

I = 0

For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For J = 1 To 3
Tablo(I, J) = c.Offset(, J)
Next
I = I + 1
End If
Next c

Range("H5").Resize(I, J).Value = Tablo

End Sub

A+

ABED HADDOU wrote:
Re,Bonjour
ton code renvoi uniquement la première occurrence de la valeur cher chée
voi ça http://cjoint.com/?hult1oysNY

merci pour ton aide et bonne journée

Abed_H



Autant pour moi, anonymousA a raison :/ j'ai peut etre repondu un p eu
vite.
Voila ce que, moi, j'utiliserais :

Dim Tablo()
nb = 0
For Each c In Range("A1:A20")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
If nb > 0 Then
Redim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If

Bonjour anonymousA

si j'utilse le mot clé ReDim sans Preserve j'obtient uniquement la dernière
occurrence du mot cherché.
comment faire pour obtenir les n occurnce du mot cherché et les affichées ?
merci par d'avance
Bonne journée.

Abed_H


Bonjour,

il me semble qu'il y a une confusion
Ton probleme se reduit à une seule chose : on ne peut redimen tionner
que la premiere dimention d'un tableau ;-)


En effet, ci-dessous, un extrait de l'aide d'Excel sur Redim
Si vous utilisez le mot clé Preserve, vous ne pouvez redimensi onner
que la dernière dimension du tableau. Vous ne pouvez en aucun cas
modifier le nombre de dimensions.


Par ailleurs, l'exemple suivant permet de se rendre compte de ce qu'on
peut fair ou pas

1) sans le mot clé Preserve , on peut tout faire y.c changer l es
limites de toutes les dimensions. Si on exécute le code suivan t , VBA
ne plantera pas

Dim MyArray() As Integer

ReDim MyArray(10, 20)
ReDim MyArray(10, 15)
ReDim MyArray(15, 15)

2) avec le mot clé Preserve , on peut tout faire y.c changer l es
limites de toutes les dimensions. Si on exécute le code suivan t , VBA
plantera sur la dernière ligne car on tente de changer la lim ite de
la 1ere dimension ( donc pas la dernière) ce qui est interdit

Dim MyArray() As Integer

ReDim Preserve MyArray(10, 20)
ReDim Preserve MyArray(10, 15)
ReDim Preserve MyArray(15, 15)

A+

JLuc wrote:
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parc ourir la
colone A et trouvé l'occurrence de la chaîne de caractè re "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C e t D et mêtre ces
deux valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît disant
que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des co rrection
dans mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub


Ton probleme se reduit à une seule chose : on ne peut redimen tionner
que la premiere dimention d'un tableau ;-)

Dim Tablo(1, 3)
i=1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
ReDim Preserve Tablo(i, 3)
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c

Ceci devrait convenir, pas tester

--
JLuc







--
JLuc

















Avatar
ABED HADDOU
Bonjour anonymousA
peut être que je demande de l'impossible qui n' est pas réalisable où j'ai
mal exposé le problème!
voici quesque je souhaitais http://cjoint.com/?huruoATMYl

merci beaucoup

Abed_H





Et en quoi ne fait-il pas exactement ce que tu souhaitais ?

ABED HADDOU wrote:
Re,Bonjour anonymousA
merci beacoup d'avoir penché à mon problème,le code que vous m'avais donné
ne répond pas exactement à ce que je cherchais.
bonne journée

Abed_H



Bonjour,

Pas forcément l'exercice le + complet sur les tableaux mais ca résoud
ce que tu essayes de faire

Sub test()

Dim Tablo() As String

I = 0
For Each c In Range("A1:A20")
If c.Value = "D1405" Then I = I + 1
Next

ReDim Tablo(I - 1, 3)

I = 0

For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For J = 1 To 3
Tablo(I, J) = c.Offset(, J)
Next
I = I + 1
End If
Next c

Range("H5").Resize(I, J).Value = Tablo

End Sub

A+

ABED HADDOU wrote:
Re,Bonjour
ton code renvoi uniquement la première occurrence de la valeur cherchée
voi ça http://cjoint.com/?hult1oysNY

merci pour ton aide et bonne journée

Abed_H



Autant pour moi, anonymousA a raison :/ j'ai peut etre repondu un peu
vite.
Voila ce que, moi, j'utiliserais :

Dim Tablo()
nb = 0
For Each c In Range("A1:A20")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
If nb > 0 Then
Redim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If

Bonjour anonymousA

si j'utilse le mot clé ReDim sans Preserve j'obtient uniquement la dernière
occurrence du mot cherché.
comment faire pour obtenir les n occurnce du mot cherché et les affichées ?
merci par d'avance
Bonne journée.

Abed_H


Bonjour,

il me semble qu'il y a une confusion
Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)


En effet, ci-dessous, un extrait de l'aide d'Excel sur Redim
Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner
que la dernière dimension du tableau. Vous ne pouvez en aucun cas
modifier le nombre de dimensions.


Par ailleurs, l'exemple suivant permet de se rendre compte de ce qu'on
peut fair ou pas

1) sans le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
ne plantera pas

Dim MyArray() As Integer

ReDim MyArray(10, 20)
ReDim MyArray(10, 15)
ReDim MyArray(15, 15)

2) avec le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
plantera sur la dernière ligne car on tente de changer la limite de
la 1ere dimension ( donc pas la dernière) ce qui est interdit

Dim MyArray() As Integer

ReDim Preserve MyArray(10, 20)
ReDim Preserve MyArray(10, 15)
ReDim Preserve MyArray(15, 15)

A+

JLuc wrote:
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parcourir la
colone A et trouvé l'occurrence de la chaîne de caractère "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C et D et mêtre ces
deux valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît disant
que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des correction
dans mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub


Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)

Dim Tablo(1, 3)
i=1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
ReDim Preserve Tablo(i, 3)
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c

Ceci devrait convenir, pas tester

--
JLuc







--
JLuc





















Avatar
anonymousA
Il suffisait juste d'ajouster les tailles des 2 ranges ce qui d'ailleurs
était le cas dans mon 1er post et ensuite d'ajuster l'endroit où tu
voulais le retour

i = 0
For Each c In Range("A1:A30")
If c.Value = "D1405" Then i = i + 1
Next

ReDim Tablo(i - 1, 3)

i = 0

For Each c In Range("A1:A30")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next
i = i + 1
End If
Next c

Range("H13").Resize(i, j).Value = Tablo

A+



Bonjour anonymousA
peut être que je demande de l'impossible qui n' est pas réalisable où j'ai
mal exposé le problème!
voici quesque je souhaitais http://cjoint.com/?huruoATMYl

merci beaucoup

Abed_H





Et en quoi ne fait-il pas exactement ce que tu souhaitais ?

ABED HADDOU wrote:
Re,Bonjour anonymousA
merci beacoup d'avoir penché à mon problème,le code que vous m'avais donné
ne répond pas exactement à ce que je cherchais.
bonne journée

Abed_H



Bonjour,

Pas forcément l'exercice le + complet sur les tableaux mais ca résoud
ce que tu essayes de faire

Sub test()

Dim Tablo() As String

I = 0
For Each c In Range("A1:A20")
If c.Value = "D1405" Then I = I + 1
Next

ReDim Tablo(I - 1, 3)

I = 0

For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For J = 1 To 3
Tablo(I, J) = c.Offset(, J)
Next
I = I + 1
End If
Next c

Range("H5").Resize(I, J).Value = Tablo

End Sub

A+

ABED HADDOU wrote:
Re,Bonjour
ton code renvoi uniquement la première occurrence de la valeur cherchée
voi ça http://cjoint.com/?hult1oysNY

merci pour ton aide et bonne journée

Abed_H



Autant pour moi, anonymousA a raison :/ j'ai peut etre repondu un peu
vite.
Voila ce que, moi, j'utiliserais :

Dim Tablo()
nb = 0
For Each c In Range("A1:A20")
' peut etre remplacer par un countif
' plus interessant si la plage est grande :oÞ
If c.Value = "D1405" Then
nb = nb + 1
End If
Next
If nb > 0 Then
Redim Tablo(1 To nb, 1 To 3)
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
End If

Bonjour anonymousA

si j'utilse le mot clé ReDim sans Preserve j'obtient uniquement la dernière
occurrence du mot cherché.
comment faire pour obtenir les n occurnce du mot cherché et les affichées ?
merci par d'avance
Bonne journée.

Abed_H


Bonjour,

il me semble qu'il y a une confusion
Ton probleme se reduit à une seule chose : on ne peut redimentionner
que la premiere dimention d'un tableau ;-)
En effet, ci-dessous, un extrait de l'aide d'Excel sur Redim

Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner
que la dernière dimension du tableau. Vous ne pouvez en aucun cas
modifier le nombre de dimensions.


Par ailleurs, l'exemple suivant permet de se rendre compte de ce qu'on
peut fair ou pas

1) sans le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
ne plantera pas

Dim MyArray() As Integer

ReDim MyArray(10, 20)
ReDim MyArray(10, 15)
ReDim MyArray(15, 15)

2) avec le mot clé Preserve , on peut tout faire y.c changer les
limites de toutes les dimensions. Si on exécute le code suivant , VBA
plantera sur la dernière ligne car on tente de changer la limite de
la 1ere dimension ( donc pas la dernière) ce qui est interdit

Dim MyArray() As Integer

ReDim Preserve MyArray(10, 20)
ReDim Preserve MyArray(10, 15)
ReDim Preserve MyArray(15, 15)

A+

JLuc wrote:
Bonjour tout le monde
je débute avec les tableaux, j'utilise le code suivant, parcourir la
colone A et trouvé l'occurrence de la chaîne de caractère "D1405"
s'il éxiste obtenir la valeur de la cellule à côté C et D et mêtre ces
deux valeurs dans un tableau pour les affichées après.
Alors dans la colonne A si la valeur cherché existe une fois le code
fonctionne normal pas d'erreur
s'il ya des doublons l'erreur n°9 se déclanche un message apparaît disant
que l'indice n'appartient pas à la selection.
ou est l'erreur quelqu'un pourait il m'aider ? de faire des correction
dans mon code et m'indiqué ou se trouve l'erreur.
Merci par d'avance.

Abed_H

Sub test()
Dim Tablo() As String
i = 1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
For j = 1 To 3
ReDim Preserve Tablo(i, j)
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c
Range("h5").Resize(i, j).Value = Tablo
End Sub
Ton probleme se reduit à une seule chose : on ne peut redimentionner

que la premiere dimention d'un tableau ;-)

Dim Tablo(1, 3)
i=1
For Each c In Range("A1:A20")
If c.Value = "D1405" Then
ReDim Preserve Tablo(i, 3)
For j = 1 To 3
Tablo(i, j) = c.Offset(, j)
Next j
i = i + 1
End If
Next c

Ceci devrait convenir, pas tester

--
JLuc





--
JLuc





















1 2