IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Problème de redimensionnement, tableaux dynamiques


Sujet :

VBScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut Problème de redimensionnement, tableaux dynamiques
    Bonjour à tous,

    Quelqu'un saurait-il m'expliquer ce qui cloche dans ma manière de déclarer mon tableau à deux dimensions ?? Là, je patauge complètement
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    'J'ai aussi essayé avec Dim mon_tab(1, 1)
    Dim mon_tab(0, 0)
     
    Dim i, j, cpt
    cpt = 0 
    i = 0
    j = 0
     
    For i = 0 To 5 Step 1
    	Redim mon_tab(i+1 ,j)
    	Response.write i
    	For j = 0 to 10 Step 1
    		Redim Preserve mon_tab(i, j+1)
    		Response.Write j
    		mon_tab(i, j) = j + cpt
    	Next
    	cpt = cpt + 1
    Next
     
    For i = 0 To 5 Step 1
    	For j = 0 to 10 Step 1
    		Response.Write "<p> val ("&i&","&j&") est :" & mon_tab(i, j) & "</p>"
    	Next
    Next
    L'erreur renvoyée est
    Erreur d'exécution Microsoft VBScript error '800a0009'

    Indice en dehors de la plage

    recup_orient.asp, line 13
    une idée ?
    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 0 To 5 Step 1
    	Response.write i
    	For j = 0 to 10 Step 1
    		Redim Preserve mon_tab(i+1, j+1)
    		Response.Write j
    		mon_tab(i, j) = j + cpt
    	Next
    	cpt = cpt + 1
    Next
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut ...même erreur...
    Salut ced600 et merci de ta réponse rapide,

    J'ai oublié de préciser que j'avais déjà essayé la solution que tu me propose (et qui me parassait plus logique). Dans le doute je viens de tenter d'exécuter ton code mais cela ne marche toujours pas.


    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    extrait de l'aide ...VBSCript

    voir Où trouver l'aide en ligne pour VBScript ?
    Citation Envoyé par Redim preserve
    Si vous utilisez le mot clé Preserve, vous ne pouvez modifier que la dernière dimension du tableau et, en aucun cas, le nombre de dimensions. Par exemple, si votre tableau ne comporte qu'une seule dimension, vous pouvez la modifier car c'est la dernière et seule dimension. Toutefois, si votre tableau comporte deux ou plusieurs dimensions, vous ne pouvez modifier que la dernière dimension, tout en conservant le contenu du tableau.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut Merci
    Bonjour bbil et merci pour ta réponse,

    J'aurais sûrement dû poster pour indiquer que j'avais pris connaissance de cette info depuis --> Désolé. Je cherche donc une solution alternative. En fait, dans l'application que je vais en faire, ma seconde dimension est fixe. Je me rend compte qu'une structure serait plus appropriée (à un nom j'associe dix valeurs numériques), ainsi j'aurais un tableau à une dimension remplie de structures. Je n'ai pas encore regardé si les structures sont envisageables en VBS...

    Je suis à l'écoute de toute proposition

    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut Besoin de vos lumières...
    Re-bonjour à tous,

    N'ayant trouvé aucune information indiquant qu'il est possible d'établir des structures de données, je continue avec mon tableau à deux dimensions mais en "inversant" mes dimensions. Mais... ça ne marche pas. Si quelqu'un veut bien jeter un oeil...je sèche.
    Voici le nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    'J'ai tenté beaucoup d'autres type de déclaration initiale de mon tableau
    Dim mon_tab(10,1)
     
    Dim i, j, cpt
    cpt = 0 
     
    Response.write "<h5> Remplissage </h5>"
    For j = 0 To 5 Step 1
    	For i = 0 to 10 Step 1	
    		'Response.Write j
    		mon_tab(i, j) = cpt
    		cpt = cpt + 1
    	Next
    	Redim Preserve mon_tab(i, j+1)
    Next
    Response.write "<h5> Fin Remplissage </h5>"
    Le message d'erreur est :

    Erreur d'exécution Microsoft VBScript error '800a0009'

    Indice en dehors de la plage

    recup_orient.asp, line 13

    A vot' bon coeur
    -M@rc0-
    PS : pensez au tag Résolu

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut J'ai trouvé...

    Bon, tout est rentré dans l'ordre : ça roule ! Afin que ma galère soit profitable au plus grand nombre je joins le code et SURTOUT le lien qui m'a sorti de la galère (vous mis à part )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Dim mon_tab
    ReDim mon_tab(10,0)
     
    Dim i, j, cpt
    cpt = 0
    Response.write "<h5> Remplissage </h5>"
    For i = 0 to 3
    	ReDim Preserve mon_tab(10, i+1)
    	For j = 0 to 10
    		mon_tab(j, i) = cpt
    		cpt = cpt +1 
    	Next
    Next
    Response.write "<h5> Fin Remplissage </h5>"
     
    Response.write "<h5> Lecture </h5>"
    For i = 0 to 3
    	For j = 0 to 10
    		Response.Write "<p> ("&j&", "&i&") : "&mon_tab(j ,i)&" </p>"
    	Next
    Next
     
    Response.write "<h5> Fin Lecture </h5>"
    Le lien : http://www.brico-info.com/index.php/...ent-verrouille

    Bonne journée à tous !

    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Au passage en vbs il est possible de faire des structures, des objets (sans l'héritage), des dictionnaires, et un autre truc de type collection mais je ne me souviens plus.
    Les collections tu peux en récupérer mais je n'ai jamais su en créer

    En fait je m'amusais avec les dictionnaires à chaque fois que j'avais besoin de stocker des données sans connaitre le nombres de données à stocker.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut Des structures dis-tu...
    Salut ced600,

    Tu pourrais m'aiguiller sur de la documentation concernant concernant les structures (ça me servira sûrement...). Il faut croire que Google et moi ne sommes pas très amis : j'ai rien trouvé (j'avoue ne pas y avoir passé des heures -> je suis en stage et la deadline approche ).
    Enfin bref, si tu as un ou deux liens pour les structures et objets en vbs, je suis plus que preneur...

    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Désolé mais pour les structures je crois que je les ai révés. C'est étonnant d'autant qu'il y a la possibilité de faire des classes

    Pour les classes, commençons avec un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Class MaClasse
        Private Message
     
        Public Property Set GetMessage(mes)
            Message = mes
        End Property
     
        Private Sub Class_Initialize()
            'Constructeur.
        End Sub
     
        Private Sub Class_Terminate()
            'Destructeur.
        End Sub
     
        Public Function Affichage()
            MsgBox Message
        End Function
    End Class
     
    Dim ObjectMaClass
    Set ObjectMaClass = New MaClass
     
    ObjectMaClass.SetMessage("Ma première classe.")
    ObjectMaClass.Affichage()
    Je n'ai pas testé mais cela devrait marcher.
    Plus d'info ici :
    http://www.activexperts.com/axscript/vbscriptclasses/
    http://jerome.developpez.com/tutos/classesvbscript/

    Tu peux utiliser les objets à la place des structures
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème des tableaux dynamiques (tas)
    Par oussaki dans le forum C
    Réponses: 7
    Dernier message: 26/12/2011, 11h25
  2. Problème tableaux dynamiques
    Par Vince dans le forum C++
    Réponses: 6
    Dernier message: 04/03/2009, 17h08
  3. Réponses: 6
    Dernier message: 20/02/2007, 17h00
  4. Problème avec tableaux dynamiques et procédure
    Par K20 dans le forum Langage
    Réponses: 11
    Dernier message: 06/01/2006, 20h51
  5. [D2005]Problème de tableaux dynamique
    Par Laurent Dardenne dans le forum Delphi .NET
    Réponses: 8
    Dernier message: 26/07/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo