Vbscript declare Tabl

Résolu
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 16 nov. 2006 à 03:55
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 16 nov. 2006 à 22:00
question toute simple :
pourquoi dans certain cas on peut declarer un tableau : "dim NomTableau" et dans d'autre cas "dim NomTableau (5)" ?

si quelqu'un peut m'orienter ...
Quand je suis là tout va mal  

13 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 04:31
Salut, c'est cadeau, ça fait plaisir :

<hr size= "2" width="100%" /> Type de données StringSi vous savez qu'une variable contiendra toujours une chaîne de caractères et
jamais de valeur numérique, vous pouvez la déclarer comme étant de type String :

Private S As String


Vous pouvez ensuite affecter des chaînes de caractères à cette valeur et la
manipuler à l'aide des fonctions de chaînes de caractères :

S  = "Database"
S =  Left(S, 4)


Par défaut, une variable ou un argument chaîne de caractères est une
chaîne de longueur variable  ; la longueur de la chaîne croît ou décroît à
mesure que vous affectez de nouvelles données à la variable. Vous pouvez
également déclarer des chaînes de longueur fixe à l'aide de la syntaxe
suivante :

String * size

Par exemple, pour déclarer une chaîne dont la longueur sera toujours de 50
caractères, utilisez du code semblable à celui-ci :

Dim EmpName As String * 50


Si vous affectez une chaîne de moins de 50 caractères,
EmpName

ajoute à droite le nombre d'espaces nécessaires pour atteindre les 50
caractères. Si vous affectez une chaîne trop longue par rapport à la longueur
fixe spécifiée, Visual Basic tronque simplement les caractères en trop.

Étant donné que les chaînes de longueur fixe présentent à droite bon nombre
d'espaces, vous apprécierez les fonctions Trim et RTrim qui suppriment les
espaces lorsque vous manipulez ces chaînes.

Dans les modules standard, les chaînes de caractères de longueur fixe peuvent
être déclarées comme Public ou Private. Dans les modules de feuille et de
classe, en revanche, elles doivent être déclarées comme Private.

<hr size ="2" width= "100%" />
Déclaration de tableaux de taille fixe
Vous pouvez déclarer un tableau de taille fixe de trois manières différentes, selon
la portée que vous souhaitez conférer à votre tableau :

<li>Pour créer un tableau public , déclarez-le à l'aide de l'instruction
Public dans la section Déclarations d'un module.

</li><li>Pour créer un tableau de niveau module, déclarez-le à l'aide de
l'instruction Private dans la section Déclarations d'un module.

</li><li>Pour créer un tableau local, déclarez-le à l'aide de l'instruction
Private dans une procédure. </li>Définition des limites supérieure et inférieure
Quand vous déclarez un tableau, faites suivre son nom par la limite supérieure
entre parenthèses. La limite supérieure ne peut pas dépasser la plage d'un type
de données Long (-2 147 483 648 à 2 147 483 647). Par exemple, ces déclarations
de tableaux peuvent apparaître dans la section Déclarations d'un module :

Dim Counters(14) As Integer         ' 15 éléments.
Dim Sums(20) As Double            ' 21 éléments.


Pour créer un tableau public, remplacez simplement Dim par Public :

Public Counters(14) As Integer
Public Sums(20) As Double


À l'intérieur d'une procédure, ces déclarations sont faites à l'aide de
l'instruction Dim :

Dim Counters(14) As Integer
Dim Sums(20) As Double


La première déclaration crée un tableau de 15 éléments dont les numéros d'index vont de 0 à
14. La deuxième crée un tableau de 21 éléments, dont les numéros d'index vont de 0
à 20. La limite inférieure par défaut est 0.

Pour définir une limite inférieure, spécifiez-la explicitement (comme un type
de données Long) à l'aide du mot clé To :

Dim Counters(1 To 15) As Integer
Dim Sums(100 To 120) As String


Dans les déclarations précédentes, les numéros d'index de
Counters
vont de 1 à 15, et ceux des
Sums
de 100 à
120.

Tableaux contenant d'autres tableaux
Vous pouvez créer un tableau Variant et le remplir avec d'autres tableaux de
types de données différents. Le code ci-dessous crée deux tableaux : l'un
contenant des entiers et l'autre des chaînes. Ensuite, il déclare un troisième
tableau Variant et
le remplit avec les tableaux d'entiers et de chaînes.

Private intX As Integer   ' Déclare la variable compteur.
Private Sub Command1_Click()
   Dim intX As Integer
   ' Déclare et remplit un tableau d'entiers.
   Dim countersA(5) As Integer
      For intX  = 0 To 4
         countersA(intX) = 5
      Next intX
   ' Déclare et remplit un tableau de chaînes.
      Dim countersB(5) As String
         For intX = 0 To 4
            countersB(intX) = "bonjour"
         Next intX
   Dim arrX(2) As Variant      ' Déclare un nouveau tableau à 
                              ' deux membres.
      arrX(1) = countersA()   ' Remplit le tableau avec les 
                              ' autres tableaux.
      arrX(2) = countersB()
      MsgBox arrX(1)(2)         ' Affiche un membre de chaque tableau.
      MsgBox arrX(2)(3)
End Sub


Tableaux multidimensionnels
Vous devez parfois garder une trace des informations connexes au sein d'un
tableau. Pour
garder une trace de chaque pixel de l'écran de votre ordinateur, par exemple,
vous devez faire référence aux coordonnées X et Y, en stockant les valeurs dans
un tableau
multidimensionnel.

Visual Basic vous autorise à déclarer des tableaux de dimensions multiples.
Par exemple, l'instruction suivante déclare un tableau bidimensionnel de
10 sur 10 à l'intérieur d'une procédure :

Static MatrixA(9, 9) As Double


Vous pouvez déclarer l'une et/ou l'autre de ces deux dimensions avec des
limites inférieures explicites :

Static MatrixA(1 To 10, 1 To 10) As Double


Vous pouvez étendre cela à plus de deux dimensions. Par exemple :

Dim MultiD(3, 1 To 10, 1 To 15)


Cette déclaration crée un tableau en trois dimensions de 4 sur 10 sur 15. Le nombre
total d'éléments est le produit de ces trois dimensions, soit 600.

Note    Quand vous commencez à ajouter des
dimensions à un tableau, l'espace total nécessaire au stockage du tableau augmente
considérablement : utilisez donc ces tableaux avec parcimonie. Soyez
particulièrement attentif aux tableaux Variant, car ils sont plus volumineux que
ceux comprenant les autres types de données.

Manipulation de tableaux à l'aide de boucles
Vous pouvez traiter efficacement un tableau multidimensionnel à l'aide de boucles For
imbriquées. Les instructions suivantes, par exemple, initialisent chaque élément
de
MatrixA
à l'aide d'une valeur basée sur sa position dans le
tableau :

Dim I As Integer, J As Integer
Static MatrixA(1 To 10, 1 To 10) As Double
For I  = 1 To 10
   For J = 1 To 10
      MatrixA(I, J) = I * 10 + J
   Next J
Next I


@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 04:33
1ere partie : les espaces blancs : c'est le mot String,
2eme partie : ""        ""            ""    : c'est le mot Tableau.

Pour lire, sélectionne le texte, ce sera plus simple. (désolé pour la mise en page)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 nov. 2006 à 09:35
Juste une remarque pour leSaleGauss :

dim NomTableau n'a jamais été et ne sera jamais un tableau
dim NomTableau() est un tableau de taille non définie
dim NomTableau(15) est un tableau de taille définie ET fixe

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 19:33
mortalino => whoaaaaaaaa .... mille merci I'm very happy
casy => t'en ai sur ?
regarde, ce code fonctionne bien pourtant :

Dim MyString, valeur, Msg 'Valeur est le tableau


 MyString = "test;de;lecture"
 
 valeur = Split(MyString, ";", -1, 1)


 Msg = valeur(0) & " " & valeur(1)
 Msg = Msg   & " " & valeur(2)
 MsgBox Msg



Quand je suis là tout va mal  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 19:38
J'avais pas remarquer mais quand tu valides la réponse String et tableau sont plus visibles

Quand je suis là tout va mal  
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 nov. 2006 à 19:46
valeur n'est pas un tableau, mais un variant (comme les autres variables d'ailleurs). Et un variant peut contenir un tableau
Ressaye ton code avec la ligne suivante, il ne devrait pas marcher:

Dim MyString as String, valeur as String, Msg as String

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 20:01
Dim MyString , valeur() As String, Msg</strike>'Valeur est le tableau MyString = "test;de;lecture"
 valeur = Split(MyString, ";"<strike>, -1, 1</strike>) ' ce sont ces valeurs par défaut

 MsgBox valeur(0) & Space(1) & valeur(2)
' ou
MsgBox LBound(valeur) & Space(1) & UBound(valeur)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 20:37
casy => ok ok j'abdique
mortalino => MsgBox valeur(0) & Space(1) & valeur(1) & Space(1) & valeur(2)
' sinon il affiche "test lecture" à moins que c'était volontaire de ta part ...
MsgBox LBound(valeur) & Space(1) & UBound(valeur) 'c'est pour connaître leur emplacement dans le tableau ?
Quand je suis là tout va mal  
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 20:57
Oui, c'était volontaire, pour que ce soit la même chose quavec les L & UBound.
LBound, c'est le plus petit indice, donc ici 0
UBound, c'est le plus grand indice, donc ici 2

Du coup, tu peux aussi coder ça comme ceci :

Sub test()
    Dim MyString As String
    Dim Msg      As String
    Dim valeur() As String
    Dim i        As Byte 'ou Integer, selon besoin
    
        MyString =  "test;de;lecture"
        valeur = Split(MyString, ";")
    
    
    For i = LBound(valeur) To UBound(valeur)
        Msg = Msg & valeur(i) & Space(1)
    Next i
    
    Msg = RTrim$(Msg)  ' avec la boucle, j'ai un espace de trop à droite, que
                       ' je supprime donc avec RTrim
    MsgBox Msg
    Erase valeur  ' quand plus besoin des données du tableau
End Sub

~<small> Mortalino </small>~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 21:19
Je suis pris d'un doute ... si je mets Dim Msg As String j'ai un message d'erreur

"Fin d'instruction attendue" alors que si je mets "Dim Msg
"  tout seul je n'ai pas d'erreur. Problème de conversion (ou de langage)?
Quand je suis là tout va mal  
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 21:23
Pour moi, tu codes avec VB6 :

Vous êtes ici :
Thèmes / Visual Basic 6 / Divers / Débutants / vbscript declare Tabl

Maintenant, si t'es en dotnet, c'est certainement différent

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 21:36
je regarde ...
Quand je suis là tout va mal  
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
16 nov. 2006 à 22:00
... et j'ai trouvé que VBscript et vb6 ne sont tout à fait pareil. Puisque VBscript se rapproche de Java les déclarations ne sont pas les mêmes. Enfin bref,merci beaucoup à vous deux !!!

@++
Quand je suis là tout va mal  
0
Rejoignez-nous