jeanjeandada
Messages postés152Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention20 novembre 2011
-
16 juin 2008 à 09:59
jeanjeandada
Messages postés152Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention20 novembre 2011
-
17 juin 2008 à 10:15
Slt tout le monde,
Voilà j'ai un tableau qui contient des valeurs.
Mais j'aimerais le redimensionner pour pouvoir rajouter de la place pour mettre des valeurs en plus : le code Redim preserve permet de le faire
exemple :
Dim tableau() As Integer
ReDim tableau(5 - 1) As Integer
Dim go As Integer
For go = 1 To 5
tableau(RentreValeur) = go
RentreValeur = RentreValeur + 1
Next go
ReDim Preserve tableau(3 - 1) As Integer
Dim plop As Integer
Dim tre As Integer
For plop = 1 To 3
tableau(tre) = plop
tre = tre + 1
Next plop
'MsgBox "fin : " & UBound(tableau)
Le Ubound(tableau) m'afficher "2"
Pourtant auparavant mon tableau avait 4 valeurs ..
Qui pourrait m'aider svp
(j'ai regardé le tutorial avt..)
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 16 juin 2008 à 10:14
salut
ubound te retourne la dernière case du tableau....
(cf F1)
donc :
ReDim Preserve tableau(3 - 1) As Integer
ton tableau va donc de 0 à "3-1" donc 2
0
1
2
tu as 3 enregistrement,
LBound va retourner 0
UBound va retourner 2
ps : bien choisi tes noms de variables, très clair !
ps : à quoi bon faire un redim preserve si tu écrases les valeurs
ps : le redim et le redim preserve se font sans besoin de préciser le type
tout ceci est accessible dans ton aide VBA, F1
++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 16 juin 2008 à 10:18
Salut
Bizarre ton code :
Dans la première partie, tu dimensionnes ton tableau avec
ReDim tableau(5 - 1)
5 - 1 = 4, ton tableau est donc dimensionné de 0 à 4
Puis tu écris 1 dans Tableau(0), 2 dans Tableau(1), ... 5 dans Tableau(4)
avec ta pemière boucle For-Next
Et juste après, tu redimensionnes ton tableau à avec
ReDim Preserve tableau(3 - 1)
3 - 1 = 2, ton tableau est donc dimensionné de 0 à 2
Ce qui veut dire que tu perds les éléments que tu à entré précédemment.
Normal donc que UBound te réponde 2.
Normal qu'il renvoie 4 auparavant.
Mais ton code ne sert pas à grand chose ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
jeanjeandada
Messages postés152Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention20 novembre 2011 16 juin 2008 à 15:42
Yep, RE
ok à la fin de mon code mon tableau fait 3 places.
Je croyais que Redim preserve conservai les valeurs du tableau tout en modifiant la taille du tableau.
En faite il faut faire ceci :
Dim tableau() As Integer
ReDim tableau(5 - 1) As Integer
Dim go As Integer, x as integer, y as integer
x=1
y=5
For go = x To 5
tableau(RentreValeur) = go
RentreValeur = RentreValeur + 1
Next go
dim u as integer, v as integer,nb_place as integer
u=3
v=1
Ubound(tableau)=nb_place
ReDim Preserve tableau(nb_place + (u - v)) As Integer
Dim plop As Integer
Dim tre As Integer
For plop = 1 To 3
tableau(nb_place+tre) = plop
tre = tre + 1
Next plop
ce code est-il correcte ? Je veux dire est-ce comme ça qu'il faut faire pour ne pas "écraser" mon tableau et garder les valeurs du tableau avt de faire à nouveau le Redim Preserve
jeanjeandada
Messages postés152Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention20 novembre 2011 16 juin 2008 à 17:17
OK d'ac !
mais pour info. le type de code (faire des addition dans le tableau pour le dimensionnement) est correct ? : ReDim Preserve tableau(nb_place + (u - v)) As Integer
jeanjeandada
Messages postés152Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention20 novembre 2011 17 juin 2008 à 10:15
OKay
Bon jvais essayé de me débrouiller comme un grand maintenat avec cette satanée touche F1
^^
Merci pour ton aides, ca me servira pour la compréhension !