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 :

Parcours d'une de liste à sélection multiple


Sujet :

VBA Access

  1. #21
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    J'ai bien compris le problème et tu peux remarquer que moi aussi j'ai des doublons dans ma liste2.

    malheureusement, je n'aurai pas beaucoup de temps aujourd'hui. J'essaie de regarder cela durant la semaine prochaine. D'autant plus qu'il s'agit d'un problème interessant

  2. #22
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Et ouais, parce que bien que fonctionnel, c'est moche, et vraiment pas pratique : quand tu as une centaine d'enregistrements et qu'ils se retrouvent doublés, triplés, ou pire ...
    Bon et ben, si on arrive à trouver une solution la semaine prochaine, ça me va
    Je te souhaite donc un bon week-end

  3. #23
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Je pense avoir trouvé une solution.
    Aujourd'hui, je suis occupé car j'assure une formation. Durant une pause, Je fais un test sur la solution à laquelle j'ai pensée et je t'envoie une base exemple.

    A+

  4. #24
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Ok, merci de ton obligeance.
    Je cherche moi aussi une solution

  5. #25
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Voilà une solution à ton problème

    Je suis passé par DAO.

    Je t'explique :
    les deux listes sont alimentées l'une par la table T_auteur et l'autre par T_Genre.
    Comme j'utilise les tables sans relation, il n'y a aucun doublon.

    Dans la procédure je crée un jeu d'enregistrements qui reprend la relation entre les deux tables. Lors que je choisis un auteur, je consulte le jeu d'enregistrements et si le code auteur du Recordset est égal au CodeAuteur choisi, je sélectionne l'item correspondant dans la liste des Genres. Ce qui donne 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
    Private Sub lstAuteur_AfterUpdate()
        ' Déclaration des variables
        Dim intcompteur As Integer
        Dim rsGenre As DAO.Recordset
        Dim strSQLGenre As String
     
        ' Initiatalisation de la syntaxe SQL
        strSQLGenre = "SELECT auteur.[CODE AUTEUR], Genre.[CODE GENRE] " & _
                              "FROM Genre INNER JOIN (auteur INNER JOIN livres " & _
                              "ON auteur.[CODE AUTEUR] = livres.[CODE AUTEUR]) ON Genre.[CODE GENRE] = livres.[CODE GENRE]"
     
        ' Récupération du jeu d'enregistrements
        Set rsGenre = CurrentDb.OpenRecordset(strSQLGenre)
     
        ' Désactivation des items déjà sélectionnés
        For intcompteur = 0 To lstGenre.ListCount
                Me.lstGenre.Selected(intcompteur) = False
        Next
     
        ' Traitement du code auteur sélectionné
        With rsGenre
            Do While Not .EOF
            ' Test le champ CodeAuteur lu par rapport au code auteur sélectionné
            If .Fields(0) = CInt(lstAuteur) Then
                ' Sélectionne la ligne
                Me.lstGenre.Selected(.Fields(1) - 1) = True
            End If
            ' passe à l'enregistrement suivant
            .MoveNext
        Loop
        End With
    End Sub
    J'espère que ceci répondra mieux à tes attentes !
    Bonne continuation
    Je joins un nouvel exemple

    A+

  6. #26
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    C'est marrant parce que bien que ne connaissant rien à la DAO, je commençais à plancher sur une solution allant dans ce sens.
    J'avais fait ma requète dans le code avec mon OpenRecordset, mais je ne savais pas quoi faire ensuite
    Enfin merci pour ce code, cependant je n'arrive pas à l'adapter pour que ça fonctionne chez moi (quand je clique, rien ne se passe)
    Ca pourrait venir de ma requète ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req = "SELECT [M.LibMotif], [M.NumMotif] FROM MOTIF AS M, Avoir AS A, NOTES AS N WHERE A.NumMotif = M.NumMotif AND N.NumNote=A.NumNote AND A.NumNote=" & Me.lstNotes.Column(0) & ";"
    Autre question : à quoi servent les expressions ".EOF" et "Fields" ? (si je comprends mieux le code, je pourrai me débuguer tout seul)

  7. #27
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Tu as dit que tu utilisais des tables sans relation ?
    Ca viendrait peut-être de là alors ... Parce que j'ai des relations, moi

  8. #28
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Peux tu mettre un extrait de ta base ?

    J'y jetterai un oeil

  9. #29
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Oui, je te joins ça
    J'ai allégé la base et j'ai mis juste les deux fomulaires utiles
    Fichiers attachés Fichiers attachés

  10. #30
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    J'ai bien reçu ta base, pourrais-tu m'expliquer un peu comment fonctionne ton formulaire et qu'elle est la liste qui influence l'autre ?

    Par rapport au code :

    .EOF : représente la fin du jeu d'enregistrements. Je fais donc une boucle pour lire les enregistrements du recordset. Cette boucle tourne tanr que je ne suis pas arrivé à la fin du jeu (End Of File)

    .Fields : Le mot Field (champ) représente un champ de la requete. On peut les désignéer soit par un n° d'index soit par leur nom dans la requete.
    Ainsi : .Fields(0) et .Fields("CodeAuteur") représente le même champ dans la structure SQL de la requête. (0 parceque l'indexation commence toujours à 0)

    Je te souhaite une bonne journée.

  11. #31
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Alors dans mon formulaire, quand je clique sur une note (dans la ZdL lstNotes), les différents motifs associés de la ZdL lstMotif, doivent être sélectionnés.
    Merci pour les explications sur la DAO

  12. #32
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Yop ! Il y a du nouveau
    Hier on m'a installé Access 2002, parce qu'aparavant, j'avais la version 2000 qui n'était pas sans bug, et qui plantait quand je demandais de l'aide sur la DAO.
    Je ne sais pas si c'est déterminant, mais bon, je tenais à le signaler

  13. #33
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Par contre, j'ai pas trouvé dans ta base où était la solution à mon problème

  14. #34
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    De quelle base veux tu parler ?

  15. #35
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Je te joins ta base dans laquelle j'ai écris la sélection des motifs.
    A toi de jouer maintenant
    Fichiers attachés Fichiers attachés

  16. #36
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Tu vas me haïr, mais j'ai recopié le code de l'évènement sur click de la ZdL lstNotes texto, à la virgules près, et ça ne fait toujours rien
    Qu'est ce que tu as fait comme modifs exactement ?

  17. #37
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    J'ai changé la colonne liée sur la liste des motifs lstMotif (j'ai mis 2) le listindex reprend la valeur de la colonne liée.
    J'ai oublié de te le signaler

  18. #38
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    j'ai regardé brièvement les codes fournis.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub lstNotes_Click()
        Me.cmdValider.Enabled = False
        Me.cmdModifier.Enabled = True
        Me.cmdSupprimer.Enabled = True
        Me.cmdCommentaire.Enabled = True
        Me.cmdImprimer.Enabled = True
     
    '----- debut nouvelle section -----
     
    Dim strSqlAvoir As String
    Dim i As Long
     
    strSqlAvoir = "SELECT [LibMotif], [NumMotif], " + _
    "[NumMotif] IN (SELECT NumMotif FROM Avoir WHERE NumNote=Forms![frmContratIrregulier].Lstnotes) AS EstPresent " + _
    "FROM MOTIF"
    lstMotif.RowSource = strSqlAvoir
     
    For i = 0 To lstMotif.ListCount - 1
        lstMotif.Selected(i) = CInt(lstMotif.Column(2, i)) 'EstPresent
    Next i
     
    For i = 0 To lstAssu.ListCount - 1
        lstAssu.Selected(i) = (lstAssu.Column(1, i) = lstNotes.Column(12)) ' [NumEmploye]=[NumVendeur]?
    Next i
     
    '----- fin nouvelle section -----
     
        Me.txtNumNote = lstNotes.Column(0)
        Me.txtDate = lstNotes.Column(1)
        Me.lstNumContrat = lstNotes.Column(2)
        Me.txtDateCrea = lstNotes.Column(3)
        Me.lstNumCli = lstNotes.Column(4)
        Me.lstNomCli = lstNotes.Column(5)
        Me.txtDateEffet = lstNotes.Column(6)
        Me.txtNature = lstNotes.Column(7)
        Me.lstNomVendeur = lstNotes.Column(8)
        Me.lstAssu = lstNotes.Column(9)
        Me.txtNumAgence = lstNotes.Column(10)
        Me.lstAgence = lstNotes.Column(11)
        Me.txtNumVendeur = lstNotes.Column(12)
    End Sub
    mais il y a un pb: avec la procédure de Jeannot45 je n'obtiens pas les mêmes motifs.
    bien que les deux fonctionnes indépendamment, il y a donc un hic qq part.
    de plus je ne suis pas sur que la selection de l'assu correspond à celui de Jeannot45, j'ai basé sur [NumEmploye]=[NumVendeur] bien que les résultats correspondent.


  19. #39
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    J'ai cherché à répondre à son problème de sélection multiple entre deux zones de liste. Je n'ai pas suivi le reste de l'enchainement des valeurs affichées.
    Par contre, Vodiem, tu as raison, je n'avais pas vérifier le résultat.
    J'ai donc apportés une correction.
    Maintenant les valeurs sélectionnées en fonction du n° de Note sont correctes.

    Mille excuses
    Fichiers attachés Fichiers attachés

  20. #40
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Ok, ben c'était bien l'histoire de la colonne liée qui faisait tout foirer, j'ai mis 2, et j'ai apporté les modifs signalées par vodiem et corrigées par jeannot45, et ça fonctionne
    Un gros gros merci à vous deux !
    Ce problème aura été bien récalcitrant

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Focus sur une ligne d'une liste à sélection multiple
    Par sardaucar dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/05/2014, 11h55
  2. Réponses: 7
    Dernier message: 15/08/2012, 17h16
  3. récupérer les valeurs d'une zone de liste à sélection multiple
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 09/07/2009, 22h19
  4. Récupérer le texte d'une liste à sélection multiple
    Par alexandrebergercyr dans le forum IHM
    Réponses: 4
    Dernier message: 21/06/2007, 16h30

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