Tu as oublier de modifier le range de la 2eme boucle... :')
Sinon, ca marcheRe,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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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
Tu as oublier de modifier le range de la 2eme boucle... :')
Sinon, ca marcheRe,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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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
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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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
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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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_HEt 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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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
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
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_HEt 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_HBonjour,
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_HAutant 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 IfBonjour 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_HBonjour,
il me semble qu'il y a une confusionTon 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