OVH Cloud OVH Cloud

Problème Redim Preserve

5 réponses
Avatar
Charles
Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un élément,
j'obtiens le message "L'indice n'appartient pas à la sélection" - Erreur
d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles

5 réponses

Avatar
isabelle
bonjour Charles,

Sub testArray()
Dim arTVA() As Variant
Dim i As Integer
i = 1
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

isabelle


Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un élément,
j'obtiens le message "L'indice n'appartient pas à la sélection" - Erreur
d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles


Avatar
Charles
Bonsoir Isabelle,

Merci pour ton aide, mais ce que tu me proposes ne fonctionne pas. Je n'ai
plus le message d'erreur, mais la procédure que tu me proposes ne conserve
pas les données précédentes.


"isabelle" a écrit dans le message de
news:
bonjour Charles,

Sub testArray()
Dim arTVA() As Variant
Dim i As Integer
i = 1
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

isabelle


Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un
élément,


j'obtiens le message "L'indice n'appartient pas à la sélection" - Erreur
d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles




Avatar
Pierre Fauconnier
Heu, ... tu perds tes valeurs antérieures, sans Preserve, ou je me trompe ??

Pierre

isabelle wrote:
bonjour Charles,

Sub testArray()
Dim arTVA() As Variant
Dim i As Integer
i = 1
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

isabelle


Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un
élément, j'obtiens le message "L'indice n'appartient pas à la
sélection" - Erreur d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles




Avatar
Herdet
Bonsoir,
Extrait de l'aide en ligne VBA sur Preserve :
Preserve ne permet de redimensionner un tableau qu'en modifiant la limite
supérieure; toute modification de la limite inférieure provoque une erreur.
Dans ton code ReDim Preserve arTVA(0 To i, 0 To 3), c'est la limite
inférieure qui est redimensionnée par i donc ça ne marche pas.
Cordialement
Robert Dezan

"Charles" a écrit dans le message de news:
#
Bonsoir Isabelle,

Merci pour ton aide, mais ce que tu me proposes ne fonctionne pas. Je n'ai
plus le message d'erreur, mais la procédure que tu me proposes ne conserve
pas les données précédentes.


"isabelle" a écrit dans le message de
news:
bonjour Charles,

Sub testArray()
Dim arTVA() As Variant
Dim i As Integer
i = 1
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

isabelle


Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un
élément,


j'obtiens le message "L'indice n'appartient pas à la sélection" -
Erreur



d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles








Avatar
Charles
Bonsoir et un grand merci à Robert ainsi qu'aux autres

Effectivement, en incréementant la valeur supérieure, tout fonctionne


"Charles" a écrit dans le message de
news:
Bonjour à tous,

Lorsque je veux incrémenter mon tableau (contenant 4 colonnes) d'un
élément,

j'obtiens le message "L'indice n'appartient pas à la sélection" - Erreur
d'exécution '9'.

Exemple: (Le premier passage est ok !)

Sub testArray()
Dim a() As Variant
Dim i As Integer

i = 0
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ReDim Preserve arTVA(0 To i, 0 To 3)
arTVA(i, 0) = ActiveCell
arTVA(i, 1) = ActiveCell.Offset(0, 1)
arTVA(i, 2) = ActiveCell.Offset(0, 2)
arTVA(i, 3) = ActiveCell.Offset(0, 3)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Quelqu'un aurait-il une solution ?

Merci d'avance
Charles