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

VBA Access Discussion :

Parcourir une zone de liste


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut Parcourir une zone de liste
    Bonjour,

    Voilà j'ai une DB access et je fais quelques tests pour voir que tout fonctionne bien, mais évidemment il y a des erreurs... et la je suis coincé j'espère que vous pourrez m'aider!

    Voilà j'ai un formulaire qui a une zone de liste. Quand je clique sur un bouton il tient compte de quelle valeur est séléctionnée dans la liste pour effectuer un calcul.

    Seulement voilà une fois que j'ajoute une valeur à cette liste et que je la séléctionne, le bouton n'en tient pas compte, mais il prend la première valeur de la liste pour faire le calcul...

    C'est très embêtant, j'ai fais des debug, mais pourtant juste avant le calcul il contient la bonne valeur... c'est juste pour le calcul que cela change et je ne comprend pas...

    J'espère que vous pourrez m'aider!! en tout cas merci beaucoup d'avance!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Bizarre, car normalement quand on écrit me.liste.column(0) on récupère bine le contenu de la 1ère colonne de la ligne sélectionnée!

    Autrement si tu veux parcourir toutes les lignes de la liste tu peux utiliser sa propriété Recordset:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    me.liste.recordset.movefirst
    Do while not me.liste.recordset.EOF
     If me.liste.recordset.column(0)=le bon identifiant then
       utiliser la valeur de me.liste.recordset.column(x)
     End If 
     me.liste.recordset.MoveNext
    Loop
    Philippe

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonjour subnox,

    Ce serait tellement plus simple avec un extrait significatif du code utilisé

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Voilà, alors ici quand je séléctionne dans la liste la valeur et que je clique sur le bouton Rechnen, le code enregistre la valeur dans myOpenArg et ouvre le formulaire avec la valeur de myOpenArg

    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
    Private Sub Rechnen_Click()
     
        Dim myOpenArg As Integer
        If Not IsNull(Me.PlanungListe.Value) Then
        myOpenArg = CInt(Me.PlanungListe.Value)
        DoCmd.OpenForm "frm_Rechnen", , , , , , myOpenArg
     
        Else
     
    Err_Save_Click:
            MsgBox "Sie haben keine Value auswählen!"
            DoCmd.Requery
     
        End If
     
    End Sub
    Et ici, quand le formulaire s'ouvre, il regarde si myOpenArg n'est pas vide, il prend sa valeur, et atteind l'enregistrement qui a l'ID de myOpenArg.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Open(Cancel As Integer)
        Dim tmpProjektID As Integer
     
        If Me.OpenArgs <> "" Then
        tmpProjektID = Me.OpenArgs 'Donc ici il prend la valeur de myOpenArg
     
        If Len(tmpProjektID) > 0 Then
            DoCmd.GoToControl "PPM_ID"  'Et ici il renvoi le prog au bon enregistrement (grâce à l'ID)
            DoCmd.FindRecord tmpProjektID, , True, , True, , True
        End If
      End If
    Ce qui est bizarre, c'est que quand je séléctionne n'importe quelle valeur dans la liste cela fonctionne, il renvoi au bon enregistrement.
    Par contre une fois que je crée une nouvelle valeur dans cette liste et que je la séléctionne, il ne prend pas sa valeur, il prend la valeur de la première de la liste.

    Merci déjà de votre aide!!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Comment crées-tu cette nouvelle valeur ?

    Starec

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Alors ma zone de liste est en fait lié à une de mes tables, donc si j'ajoute une ligne (enregistrement) dans cette table, la zone de liste a automatiquement une valeur en plus!

    et c'est la que je comprend plus car pour les valeurs qui existent déjà le calcul fonctionne mais pour ces nouvelles lignes ca ne fonctionne pas...

    Pourtant j'ai même essayer de tout fermer et relancer le prog, pour que les tables se remettent bien à jour mais ca change rien...

    Ex concret:

    voilà des valeurs dans ma zone de liste:
    ID1
    ID2
    ID3
    ...

    je séléctionne ID2 et mon formulaire en s'ouvrant fait des calcul en fonction des valeurs de ID2

    Puis je dois pouvoir implémanter cette liste (table) donc j'ajoute une ligne dans ma table --> ID4

    ID4 s'affiche correctement dans ma zone de liste, mais si je séléctionne ID4 le formulaire n'effectue pas les calculs avec ID4, mais avec ID1...

    Voilà, je sai pas si c'est plus clair!?

    Merci en tout cas, ca fait plaisir!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Est-ce qu'il y'a d'autres données liées à IDx, qui servent pour le calcul et qui ne seraient pas renseignées ?

    Starec

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Non, enfin je veux dire toutes les données pour le calcul sont renseigné justement...

    et même, par exemple si je supprime toutes les valeurs d'un IDx et que je fais le calcul par rapport à cet IDx, le prog me fait une erreur (valeur impossible) ou qqch du genre, mais il prend pas le premier IDx de la liste...

    je vais desespérer... lol

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    As-tu essayé le mode pas à pas pour vérifier les valeurs de MyOpenargs?
    Lorsqu'un élément n'est pas dans la liste, comment est-il ajouté à la table? Via l'évènement "Notinlist" de la liste?

    D'un autré côté, si tes ID sont des numéros automatiques donnés par Access sur la clé primaire de la table, tu as intérêt à travailler avec des entiers longs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim MyOpenargs as Long
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tmpProjektID as Long
    D'autre part, Openargs n'est pas une chaine vide ("") si on ne passe pas d'arguments à l'ouverture, mais égal à NULL. La condition dans l'évènement d'ouverture doit donc être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Form_Open(Cancel As Integer)
        Dim tmpProjektID As Long
     
        If not isnull(Me.OpenArgs) Then
        tmpProjektID = Me.OpenArgs
        ....

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Ben en tout cas merci beaucoup à tous! J'ai effectivement trouvé d'ou venait cette erreur...

    Un peu bête mais enfin:

    J'ai 3 tables qui sont nécessaire au fonctionnement de mon calcul et qui reçoivent chacune différents résultats, et dans une de ces 3 tables, le IDx n'était pas créé alors il ne pouvait pas faire le calcul avec cet IDx...

    J'ai fais qu'a la création d'un nouvel ID, il soit créé automatiquement dans les 3 tables et comme ca je devrais plus avoir de problème!

    En tout cas merci pour les conseils, com ca fait 1 mois que je me suis mis à Access je suis pas encore très câlé mais c'est toujours utile de connaitre les subtilité des fonctions!! tel que openarg n'est pas vide mais = "null"

    Merci à tous!

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

Discussions similaires

  1. Parcourir une zone de liste
    Par christgh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/09/2008, 12h12
  2. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20
  3. se déplacer sur une zone de liste
    Par bb62 dans le forum IHM
    Réponses: 12
    Dernier message: 31/01/2005, 10h47
  4. Réponses: 6
    Dernier message: 24/01/2005, 11h06
  5. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30

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