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 :

Variable qui ne s'incrémente pas !


Sujet :

VB 6 et antérieur

  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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 155
    Points
    17 155
    Par défaut
    Salut

    Si les Types et la variable sont déclarés dans un formulaire .bas
    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
    Private 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
    Private Type local_sup
        id As Integer
        name As String
        dataTab_s() As dataTab_sup
    End Type
    Private Type batiment_sup
        id As Integer
        name As String
        local_s() As local_sup
    End Type
    Public tab_bat_sup() As batiment_sup
    Par contre si cela est dans un Form, tu ne peux déclaré Public tab_bat_sup() As batiment_sup mais seulement Dim tab_bat_sup() As batiment_sup donc utilisable que dans le Form.

    Pour moi, après essais de la la partie du code fournit, la variable static s’incrémente normalement.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  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
    je réessaie dans ce cas parfois quand on ferme et rouvre cela refonctionne Windows --'

    Aurais tu une idée pour les autres problème notamment le redimenssionnement du tableau et pour la valeur saisie dans la liste modifiable ?

    Les types sont déclarés dans un module, ils sont volontairement en public

  4. #4
    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
    Cela ne fonctionne toujours pas chez moi --'

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 155
    Points
    17 155
    Par défaut
    Au projet j'ai ajouté un module .bas dans lequel j'ai mis ce
    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
    '************************ Ajout ***************************************
    Private 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
    Private Type local_sup
        id As Integer
        name As String
        dataTab_s() As dataTab_sup
    End Type
    Private Type batiment_sup
        id As Integer
        name As String
        local_s() As local_sup
    End Type
    Public tab_bat_sup() As batiment_sup
    '************************ Fin ajout ***************************************
    sur le UserForm j'ai ajouté un Label et copier ce
    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
    Dim i 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
        '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
        Label1.Caption = i
    End Sub
    suite à l'utilisation du bouton Ajouter_bat_sup la dernière ligne permet de vérifier que i est bien incrémenté, et chez moi, c'est bien le cas.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  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
    En effet, j'ai du modifier entre temps, qu'en est-il de mes autres problèmes ?

Discussions similaires

  1. Variable qui ne s'incrémente pas !
    Par winflow dans le forum VB.NET
    Réponses: 13
    Dernier message: 03/01/2014, 17h35
  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, 23h24
  3. Ma variable $_SESSION ne s'incrémente pas
    Par lemirandais dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2009, 13h14
  4. Réponses: 4
    Dernier message: 11/11/2007, 10h41
  5. Variable qui ne prend aucune pas de valeur
    Par bdptaki dans le forum Delphi
    Réponses: 3
    Dernier message: 29/04/2007, 17h09

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