Sub Qui_ne_signifie_rien()
Dim x()
For i = 1 To 20
ReDim Preserve x(1 To i)
x(i) = Int(500 * Rnd())
Next i
End Sub
Mais comme je veux transférer mon tableau dans une plage,
il me semble que mon tableau doit avoir deux dimensions.
J'ai donc essayé :
ReDim Preserve x(1 To i,1 to 1)
pour à la fin utiliser :
Range(Cells(1, 1), Cells(i - 1, 1)).Value = x
Mais ça bogue !
Peut-on redimpréserver un tableau à deux dimensions
et si oui, comment ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilbert
Bonjour,
Si tu cherches dans l'aide tu trouves ça :
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 exemple, si votre tableau n'a qu'une dimension, vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension. Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la dernière dimension est modifiable si vous souhaitez préserver le contenu du tableau.
-- Cordialement,
Gilbert
"garnote" a écrit dans le message de news:
Bonjour,
Comme ça, c'est correct :
Sub Qui_ne_signifie_rien() Dim x() For i = 1 To 20 ReDim Preserve x(1 To i) x(i) = Int(500 * Rnd()) Next i End Sub
Mais comme je veux transférer mon tableau dans une plage, il me semble que mon tableau doit avoir deux dimensions. J'ai donc essayé : ReDim Preserve x(1 To i,1 to 1) pour à la fin utiliser : Range(Cells(1, 1), Cells(i - 1, 1)).Value = x
Mais ça bogue ! Peut-on redimpréserver un tableau à deux dimensions et si oui, comment ?
Serge
Bonjour,
Si tu cherches dans l'aide tu trouves ça :
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 exemple, si votre tableau n'a qu'une dimension,
vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension.
Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la
dernière dimension est modifiable si vous souhaitez préserver le contenu du
tableau.
--
Cordialement,
Gilbert
"garnote" <garnote3RIEN@videotron.ca> a écrit dans le message de news:
OqsiOTpkJHA.2516@TK2MSFTNGP05.phx.gbl...
Bonjour,
Comme ça, c'est correct :
Sub Qui_ne_signifie_rien()
Dim x()
For i = 1 To 20
ReDim Preserve x(1 To i)
x(i) = Int(500 * Rnd())
Next i
End Sub
Mais comme je veux transférer mon tableau dans une plage,
il me semble que mon tableau doit avoir deux dimensions.
J'ai donc essayé :
ReDim Preserve x(1 To i,1 to 1)
pour à la fin utiliser :
Range(Cells(1, 1), Cells(i - 1, 1)).Value = x
Mais ça bogue !
Peut-on redimpréserver un tableau à deux dimensions
et si oui, comment ?
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 exemple, si votre tableau n'a qu'une dimension, vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension. Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la dernière dimension est modifiable si vous souhaitez préserver le contenu du tableau.
-- Cordialement,
Gilbert
"garnote" a écrit dans le message de news:
Bonjour,
Comme ça, c'est correct :
Sub Qui_ne_signifie_rien() Dim x() For i = 1 To 20 ReDim Preserve x(1 To i) x(i) = Int(500 * Rnd()) Next i End Sub
Mais comme je veux transférer mon tableau dans une plage, il me semble que mon tableau doit avoir deux dimensions. J'ai donc essayé : ReDim Preserve x(1 To i,1 to 1) pour à la fin utiliser : Range(Cells(1, 1), Cells(i - 1, 1)).Value = x
Mais ça bogue ! Peut-on redimpréserver un tableau à deux dimensions et si oui, comment ?
Serge
stefdestroy
Bonjour,
Pour un tableau à une dimension, voici pour récupérer les données s oit dans une colonne, soit dans une ligne.
Cordialement, StephD
Sub Qui_ne_signifie_rien() Dim x() Dim i# For i = 1 To 20 ReDim Preserve x(1 To i) x(i) = Int(500 * Rnd()) Next i [A1].Resize(UBound(x)) = Application.Transpose(x) 'à partir de A1 dans la colonne A [B1].Resize(, UBound(x)).Value = x 'à partir de B1 dans la ligne 1 End Sub
Bonjour,
Pour un tableau à une dimension, voici pour récupérer les données s oit
dans une colonne, soit dans une ligne.
Cordialement,
StephD
Sub Qui_ne_signifie_rien()
Dim x()
Dim i#
For i = 1 To 20
ReDim Preserve x(1 To i)
x(i) = Int(500 * Rnd())
Next i
[A1].Resize(UBound(x)) = Application.Transpose(x) 'à partir de
A1 dans la colonne A
[B1].Resize(, UBound(x)).Value = x 'à partir de B1 dans la
ligne 1
End Sub
Pour un tableau à une dimension, voici pour récupérer les données s oit dans une colonne, soit dans une ligne.
Cordialement, StephD
Sub Qui_ne_signifie_rien() Dim x() Dim i# For i = 1 To 20 ReDim Preserve x(1 To i) x(i) = Int(500 * Rnd()) Next i [A1].Resize(UBound(x)) = Application.Transpose(x) 'à partir de A1 dans la colonne A [B1].Resize(, UBound(x)).Value = x 'à partir de B1 dans la ligne 1 End Sub
michdenis
1) Redim Preserve : c'est quand tu ne connais pas d'avance le nombre d'items que ton tableau aura à l'avance
Sinon, quand tu le connais, tu utilise seulement ceci : Déclaration de la variable dans le haut de la procédure dim X()
Et dans ta procédure quand tu as évalué la limite supérieur qu'aura ton tableau Redim X( 1 to 20) 'tu peux utiliser une variable à la place de 20
Et dans la boucle, tu n'as qu'à faire ceci : for a = 1 to 20 X(a) = "La valeur" next
Un tableau à une dimension : dimension 1 ligne donc ton tableau se copiera sur une ligne ... range("A1").resize(,Ubound(x)) = x 'Ne pas oublier la virgule
Pour le copier en colonne range("A1").resize(Ubound(x)) =application.Transpose(x)
1) Redim Preserve : c'est quand tu ne connais pas d'avance
le nombre d'items que ton tableau aura à l'avance
Sinon, quand tu le connais, tu utilise seulement ceci :
Déclaration de la variable dans le haut de la procédure
dim X()
Et dans ta procédure quand tu as évalué la limite supérieur
qu'aura ton tableau
Redim X( 1 to 20) 'tu peux utiliser une variable à la place de 20
Et dans la boucle, tu n'as qu'à faire ceci :
for a = 1 to 20
X(a) = "La valeur"
next
Un tableau à une dimension : dimension 1 ligne
donc ton tableau se copiera sur une ligne ...
range("A1").resize(,Ubound(x)) = x 'Ne pas oublier la virgule
Pour le copier en colonne
range("A1").resize(Ubound(x)) =application.Transpose(x)
1) Redim Preserve : c'est quand tu ne connais pas d'avance le nombre d'items que ton tableau aura à l'avance
Sinon, quand tu le connais, tu utilise seulement ceci : Déclaration de la variable dans le haut de la procédure dim X()
Et dans ta procédure quand tu as évalué la limite supérieur qu'aura ton tableau Redim X( 1 to 20) 'tu peux utiliser une variable à la place de 20
Et dans la boucle, tu n'as qu'à faire ceci : for a = 1 to 20 X(a) = "La valeur" next
Un tableau à une dimension : dimension 1 ligne donc ton tableau se copiera sur une ligne ... range("A1").resize(,Ubound(x)) = x 'Ne pas oublier la virgule
Pour le copier en colonne range("A1").resize(Ubound(x)) =application.Transpose(x)