Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1270 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] Redimensionner un tableau a plusieurs dimensions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBS] Redimensionner un tableau a plusieurs dimensions

n°1152856
piloupy
Posté le 18-07-2005 à 18:44:31  profilanswer
 

Bonjour,
 
La question a ete posee dans des posts precedents, mais j'avoue que j'ai encore quelques questions ...
 
But : Je souhaite augmenter la 1ere dimension d'un tableau a 2 dimensions
 
Contexte :
- le code est ecrit en VBScript.
- j'ai un tableau mon_tableau(10,5)
- je souhaite qu'il soit par exemple de taille (15,5)
 
Extrait de Code :

Dim mon_tableau() ' declaration d'un tableau dynamique
Redim mon_tableau(10,5)
[...]
Redim Preserve mon_tableau(15,5) ' provoque une erreur


 
Il y a une erreur car avec Preserve, on ne peut changer que la taille de la derniere dimension (cf MSDN).
 
Je dois donc faire une copie de mon_tableau quelque part (double boucle For), ReDimensionner mon_tableau, et refaire la copie des elements vers mon_tableau (double boucle For encore).
 
Question : Est-ce qu'il n'y aurait pas un moyen de passer par des pointeurs ou quelque chose de plus rapide ?
 
Bien sur, le code suivante provoque une erreur pour ceux qui auraient eu cette idee pour faire une copie de tableau (pointeurs a la C) :

Dim tab1(10,5), tab2(10,5)
 
tab1(1, 1) = "salut"
tab2(1, 1) = "aurevoir"
 
tab2 = tab1


 
Merci d'avance.
 
piloupy
 
PS : en realite, mon tableau peut atteindre plus de 1700 lignes (1ere dimension), et il est clair que la double copie des milliers d'elements en basic est un manque de performance assez genant.

mood
Publicité
Posté le 18-07-2005 à 18:44:31  profilanswer
 

n°1152864
knakes
Posté le 18-07-2005 à 18:57:13  profilanswer
 

pour la première, en chrechant un peu ..
 
http://forum.hardware.fr/hardwaref [...] 4092-1.htm
 
 
pour la seconde, si tu a 1700 lignes à ta première dimension, oublie le basic, ca va prendre un tps fou.


---------------
now : do nothing
n°1153795
piloupy
Posté le 19-07-2005 à 15:54:25  profilanswer
 

Je ne peux pas (ou ne sais pas) creer de nouveau type en VBScript. Ca aurait ete une bonne solution.
 
Est-ce que vous savez si c'est possible ?

n°1153799
conundrum0​02
Posté le 19-07-2005 à 15:58:10  profilanswer
 

je sais pas si c possible, mais existe il une fonction de transposition de matrice su vb? si c le cas tu transposes,tu extend, et tu re transposes ta matrice

n°1153946
piloupy
Posté le 19-07-2005 à 17:17:33  profilanswer
 

Il n'existe pas de fonction de transposee. J'ai prefere au final faire une copie du tableau.
 
Voici le code :
 

Const TAILLE_COLONNE = 3
 
Sub extendUsersList(ByVal incr)
  localArray = usersList
  ligne = UBound(usersList)
  ReDim usersList(ligne + incr, TAILLE_COLONNE)
  For i = 0 To ligne
    For j = 0 To TAILLE_COLONNE
      usersList(i, j) = localArray(i, j)
    Next
  Next
End Sub
 
Public usersList()
ReDim usersList(50, TAILLE_COLONNE)
 
For i = 0 To 50
  For j = 0 To TAILLE_COLONNE
    usersList(i, j) = i & ", " & j
  Next
Next
 
Wscript.Echo "Dimensions de usersList : " & UBound(usersList, 1) & ", " & Ubound(usersList, 2)
 
extendUsersList(100)
 
For i = 0 To 50
  For j = 0 To TAILLE_COLONNE
    Wscript.Echo usersList(i, j)
  Next
Next
Wscript.Echo "Dimensions de usersList : " & UBound(usersList, 1) & ", " & Ubound(usersList, 2)


 
Et une partie de la sortie :
 

Dimensions de usersList : 50, 3
0, 0
0, 1
0, 2
0, 3
1, 0
1, 1
1, 2
1, 3
2, 0
[...]
48, 3
49, 0
49, 1
49, 2
49, 3
50, 0
50, 1
50, 2
50, 3
Dimensions de usersList : 150, 3


 
Cordialement,
 
piloupy

n°1625280
mitsh666
Posté le 17-10-2007 à 11:13:50  profilanswer
 

Hello le monde,
ça fait plaisir de voir tout ce qui concerne les tab écrit en clair. J'ai eu le même problème pour la première dimension.
 
Dans la suite de ces questions, j'en ai une nouvelle :
Si on a un tableau de 10 valeurs et qu'on désire passer les valeurs n°3 à 6 vers un tableau2, comment le faire sans utilisé une boule qui prend du temps? :??:  
 
ps : je bosse sur vbscript
 
Merci

n°1906701
_xme_
Posté le 20-07-2009 à 11:24:39  profilanswer
 

Merci beaucoup pour ton sujet il m'a bien aidé :)
mitsh666, je ne comprends pas ta question :??:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] Redimensionner un tableau a plusieurs dimensions

 

Sujets relatifs
[VBS/EXCEL] Répondre à une MsgBoxidentifiant et tableau
html : couleur des liens dans un tableauRéunir plusieurs cookies en un
tableau dynamique [RESOLU]VBS Commande externe
[XML]-[XSL] tableaurechercher dans un tableau
tri d'un tableauDoublon dans un tableau d'objet
Plus de sujets relatifs à : [VBS] Redimensionner un tableau a plusieurs dimensions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR