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.NET Discussion :

Variable qui ne s'incrémente pas !


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Variable qui ne s'incrémente pas !
    Bonjour,

    J'ai les structure suivantes :

    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
    Type dataTab_sup
        id As String
        name As String
        localisation As String
        type_sup As String
        ipAddr As String
        numLicense As String
        memPhi As String
        dateAcqui As String
        dd As String
        os As String
        resEcran As String
        printer As String
    End Type
    Type local_sup
        id As Integer
        name As String
        dataTab_s() As dataTab_sup
    End Type
    Type batiment_sup
        id As Integer
        name As String
        local_s() As local_sup
    End Type
    A la suite je déclare la variable suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public tab_bat_sup() As batiment_sup

    J'ai un formulaire que je vous joins

    Dans ce formulaire j'ai le code suivant :

    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
    26
    27
    28
    29
    30
    31
    32
    Option Explicit
    Public indice_bat As Integer
     
     
    'Initialisation du formulaire
    Private Sub UserForm_Initialize()
        Dim cmp As Integer
        On Error GoTo fin:
        If UBound(tab_bat_sup) <> -1 Then
            'Ajout dans la liste déroulante modifiable tous les batiments déjà créés
            For cmp = 0 To UBound(tab_bat_sup)
                bat_sup.AddItem tab_bat_sup(cmp).name, cmp
            Next cmp
        End If
    fin:
    End Sub
    Private Sub Suivant_bat_sup_Click()
        Unload Me
        Loc_form_sup.Show
    End Sub
     
    Private Sub Ajouter_bat_sup_Click()
        'Variable statique qui permet de savoir le numero du batiment que l'on souhaite ajouter
        Static i As Integer
        'Variable statique initialisée à 0
        ReDim Preserve tab_bat_sup(i)
        tab_bat_sup(i).id = i
        tab_bat_sup(i).name = CStr(bat_sup.Value)
        indice_bat = i
        'Incrémentation du compteur
        i = i + 1
    End Sub

    Le but de ce code est d'enregistrer les informations saisies dans la structure et d'ajouter les noms de bâtiments dans la liste modifiable.

    Seulement voila ma variable i ne s'incrémente pas ! Impossible de redimensionner le tableau ! Impossible d'affecter la valeur saisie dans la liste !

    Une variable statique est censée garder sa valeur à chaque appel de fonction cela ne veut pas dire que l'on ne peut pas y toucher --'. J'ai vu des exemples sur le forum qui me le prouve !


    Merci d'avance

    Cordialement

    Winflow
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Bonjour,
    D'abord, je pense qu'il faut bien spécifier que i=0 à la déclaration, on sait jamais.
    Ensuite, pour tes tableaux de structure, tu le redimensionnes à chaque ajout, une liste serait a mon avis plus intéressante qu'un tableau pour ranger tes bâtiments.

    Maintenant je n'ai pas vraiment trop touché aux variables statiques, donc sur ce point, je ne trouve pas le problème ^^'.
    Expert en recherche google caféinomane

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Selon la définition d'une variable static elle est initialisée à 0 à la déclaration.

    Comment je pourrait faire avec une liste dans ce cas ? On peut la redimensionner également ?
    Je trouvais l'idée du tableau bonne mais bon ça fonctionne pas alors autant essayé autre chose.

  4. #4
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Sur msdn dans l'exemple, il met bien i=0 : http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx Et on perds rien à tenter le coup.

    Une liste n'a pas de taille prédéfini, tu ajoutes un élément à la liste et il se met à la fin, au dernier index, qu'on récupère par : maliste.count.
    Ça s'initialise ainsi : dim maliste as new list(of mastructure)
    Pour rajouter un élément : maliste.add(monobjet)
    Pour obtenir le dernier élément (j'en suis un poil moins sûr) : maliste(maliste.count-1)
    Bref : http://msdn.microsoft.com/fr-fr/libr...v=vs.110).aspx
    Expert en recherche google caféinomane

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Les redim Preserve sont des gouffres à performance.
    Pour les List je te conseil de suivre le cours de Mr Plasserre disponible sur ce site.

    Edit : vu que Uranne m'a devancé sur les listes, pour le dernier éléments tu peux aussi faire maliste.last.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Par liste vous entendez listbox ? Parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim maliste as new list(of mastructure)
    ne fonctionne pas...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour,
    n’êtes vous pas en VB6 ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Je suis en visual basic 6.3

  9. #9
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Si, c'est en effet du VB6, le mot clé Type est remplacé par la structure en vb.net, mais là du coup on sort de mon domaine de compétence.

    Edit : faut aller voir les collections.
    Expert en recherche google caféinomane

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Il est préférable d'utiliser des classes plutot que des structures ce qui reviens au meme pour ton application.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim maliste as new List(of MaClasse)
    maliste.add(New maclasse())
    'or
    dim item as new MaClasse()
    maliste.add(item)
    Et la tu auras un élément dans ta liste.
    Si c'est pas de ca que tu parles il faudra etre un peu plus précis ^^

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Je n'ai pas le mot clé List ...

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Ici c'est VB.Net
    Il serait préférable de poster sur le bon forum.
    C'est ici sauf erreur

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Autant pour moi...

    Désolé de vous avoir fait perdre votre temps ...

  14. #14
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Selon ton formulaire joint(Bat_form_sup.frm), tu as une variable globale i, selon ton code posté ici, une variable static i. Peut-être une piste ...

    Mais comme tu l'as dit, une variable static peut-être modifiée bien sûr (c'est presque son utilité première), donc le souci est ailleurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Static toto As Integer
     
            toto += 1
     
            MsgBox(toto) '/1 /2 /3 /4 ...
        End Sub
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

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

Discussions similaires

  1. Variable qui ne s'incrémente pas !
    Par winflow dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 03/01/2014, 22h29
  2. VBA- Une variable qui ne s'incrémente pas.Pourquoi ?
    Par gwen.s dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2010, 22h24
  3. Ma variable $_SESSION ne s'incrémente pas
    Par lemirandais dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2009, 12h14
  4. Réponses: 4
    Dernier message: 11/11/2007, 09h41
  5. Variable qui ne prend aucune pas de valeur
    Par bdptaki dans le forum Delphi
    Réponses: 3
    Dernier message: 29/04/2007, 16h09

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