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

VB 6 et antérieur Discussion :

utiliser une variable pour enregistrer la taille max du tableau


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut utiliser une variable pour enregistrer la taille max du tableau
    bonsoir toutes et tous

    j'ai très souvent besoin d'avoir la dimension de mon tableau dynamique.
    dans une ligne de code comme celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTableau(Ubound(MonTableau)).SousTablo(Ubound(MonTableau(Ubound(MonTableau)).SousTablo))
    est ce que ceci ne serait pas plus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaxMonTableau=Ubound(MonTableau)
    MonTableau(maxMonTableau).SousTablo(Ubound(MonTableau(MaxMonTableau).SousTablo))
    simplement pour essayer d'avoir un code plus rapide et peut être plus correcte
    qu'en pensez vous
    merci d'avance

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    MonTableau(maxMonTableau).SousTablo(Ubound(MonTableau(MaxMonTableau).SousTablo))
    Une telle syntaxe ne peut pas passer pour la simple raison que MonTableau est un tableau qui peut contenir n'importe quel type de données.
    Le point(.) entre MonTableau et SousTablo indiquerait que MonTableau est un objet et que SousTablo est l'une de ses propriétés; ce qui n'est le cas.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    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
     
    Public Type RetCel
        ligne As Integer
        colonne As Integer
        valeur As Integer
        cand As Integer
    End Type
    Public Type RetCelS
        RetCelS() As RetCel
    End Type
     
    Public RetourS() As RetCelS 'ensemble des retours en arrière
     
     
    ......
    ReDim Preserve RetourS(UBound(RetourS)).RetCelS(1 To nbEnreg)
     
    'j'aurais pu écrire:
     
    ReDim Preserve RetourS(UBound(RetourS)).RetCelS(1 To (RetourS(UBound(RetourS)).RetCelS))
    .......
    ce code fonctionne parfaitement

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    OK mais la déclaration Public RetourS() As RetCelS fait référence au TYPE et non au tableau.

    D'ailleurs si tu exécutes ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim RCS As RetCelS
    Private Sub Form_Click()
        MsgBox VarType(RCS.RetCelS)
    End Sub
    tu auras un beau message d'erreur. Il faudra alors remonter au type RetCel...
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    ok mais
    qu'est ce qu'il vaut mieux mettre la taille du tableau dans une variable MaxTablo=Ubound(Tablo) et appeler à chaque fois la variable si besoin de la taille du tablo ou alors appeler à chaque fois Ubound(Tablo)?
    le quel est le plus rapide ? est ce nécessaire d’embarrasser le programme avec une variable supplémentaire

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Toute variable déclarée(utilisée ou non) occupe de la mémoire.
    Moi, j'opterais pour Ubound(Tablo) plus rapide, quoiqu'une variable(intMaxTbl par exemple) qui contiendrait cette valeur serait plus explicite.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

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

Discussions similaires

  1. Utiliser une variable pour modifier la taille d'une cellule <td>
    Par morora69 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/06/2010, 16h52
  2. Utiliser une variable pour mettre des étiquettes visible
    Par patate5555 dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/06/2007, 13h51
  3. Réponses: 9
    Dernier message: 16/02/2007, 15h10
  4. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 16h44
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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