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

Access Discussion :

Synchroniser deux listes


Sujet :

Access

  1. #1
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut Synchroniser deux listes
    Salut à toutes et à tous,

    J'ai une table TCS contenant tous les conteneurs de marchandises passant par un port sans terminal à conteneur.
    Voici un exemple de cette table:
    +-----+--------------+-------+-----+------------+------------+--------------+
    |RéfTC|Num_TC........|Type_TC|Plein|Localisation|DernierMvt..|DateDernierMvt|
    +-----+--------------+-------+-----+------------+------------+--------------+
    |1....|MSCU-200789/9.|20'DV..|x....|............|Débarquement|30/06/2006....|
    +-----+--------------+-------+-----+------------+------------+--------------+
    |.....|..............|.......|.....|............|............|..............|
    +-----+--------------+-------+-----+------------+------------+--------------+
    ...
    Si un TC est présent sur l'air d'entreposage du port (la où sont entreposés les conteneurs), dans le champ Localisation, on mentionne l'endroit où se trouve le conteneur. Exemple: TP Wuillemin. Si le conteneur a été enlevé par le client, Client est mentionné dans le champ Localisation. S'il vient d'être débarqué d'un navire, Localisation est vide.

    Cette table est liée à une autre table contenant les historiques des mouvements sur chaque TC.

    Dans un formulaire (faisant office d'un tableau de bord), j'ai créé deux listes: la première affiche TOUS les conteneurs passés par le port, la seconde affiche les conteneurs encore présent sur un air d'entreposage donné.
    A chaque fois que je clique sur un élément d'une liste ou de l'autre, l'historique des mouvements du conteneur sélectionné est affichée.
    Tout marche à merveille jusque là.

    J'ai synchronisé ces deux listes: lorsque je clique sur un élément dans la première liste, si cet élément se trouve dans la deuxième liste, il sera aussi sélectionné et inversement lorsque je clique sur un élément dans la deuxième liste, si cet élément se trouve dans la première liste, il sera aussi sélectionné.
    Si l'élément ne se trouve dans la liste, il ne sélectionne rien.
    Voici le code me permettant de synchroniser les deux listes: (la première liste contenant tous les conteneurs est nommé TOUTTC et la seconde est nommés TPTC
    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
     
    Private Sub TOUTTC_Click()
      Dim i As Long, trouvé As Boolean
      trouvé = False
      For i = 0 To Me.TPTC.ListCount - 1
        If Me.TPTC.Column(0, i) = Me.TOUTTC Then
          Me.TPTC = Me.TPTC.Column(0, i)
          trouvé = True
          Exit For
        End If
      Next
      If trouvé = False Then
        Me.TPTC = 0 'ne rien sélectionner si introuvable
      End If
      'Le code qui affiche l'historique en fonction du conteneur sélectionné dans TOUTTC
      'se place ici ...
    End Sub
     
    Private Sub TPTC_Click()
      Dim i As Long, trouvé As Boolean
      hita = False
      For i = 0 To Me.TOUTTC.ListCount - 1
        If Me.TOUTTC.Column(0, i) = Me.TPTC Then
          Me.TOUTTC = Me.TOUTTC.Column(0, i)
          trouvé = True
          Exit For
        End If
      Next
      If trouvé = False Then
        Me.TOUTTC = 0 'ne rien sélectionner si introuvable
      End If
      'Le code qui affiche l'historique en fonction du conteneur sélectionné dans TPTC
      'se place ici ...
    End Sub
    Ce code répond à mes besoins. Mais je veux un plus: si l'élément n'a pas été trouvé, avant d'enlever la sélection à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Me.TOUTTC=0
    ou
        Me.TPTC=0
    je veux qu'il sélectionne (se positionne) sur le premier élément de la liste avant d'enlever la sélection.
    J'ai procédé comme suit mais cela n'a rien donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       Me.TOUTTC=Me.TOUTC.Column(0,0) 'pour sélectionner le premier élément
       Me.TOUTTC=0 'Pour enlever la sélection
    Il ne se positionne pas au premier élément de la liste mais enlève la sélection.
    Est-ce que c'est mon raisonnement qui est glauque ou y a-t-il une autre approche plus ... propre?
    Merci pour votre aide.
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  2. #2
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Salut
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TOUTTC=Me.TOUTC.Column(0,0)
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TOUTTC=Me.TOUTTC.ItemData(0)

  3. #3
    Invité
    Invité(e)
    Par défaut


    Il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TOUTTC.value = Me.TOUTTC.ItemData(0)
    Voilà

    Oups
    J'ai un post de retard, Sonic à encore frappé

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,
    Merci de votre aide.

    Je vais essayer vos propositions et je vous ferais signe de mon avancement.

    Vu que deux posts proposent les mêmes solutions, je crois que ça marcherait.

    A+
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  5. #5
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    Je présente mes remerciements à tous ceux qui m'ont apporté une lumière à mon micro problème. Je tiens à apporter

    quelques précisions et corrigez-moi s'il vous plaît si c'est une fausse déduction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Liste.Column(0,0)
    et
    Liste.ItemData(0)
    renvoient le même résultat.
    La première renvoie la valeur qui se trouve à la colonne index 0 de la ligne 0 (première colonne première ligne):

    d'habitude la colonne liée.
    La seconde renvoie la valeur qui se trouve dans la colonne liée. Pour moi elles sont identiques!

    Et cela n'a pas résolu mon problème... mais c'est ma faute!:~ J'ai oublié de vous signaler que j'ai mis Oui pour la

    propriété En-tête colonnes.
    Et du coup les deux instructions me renvoient le nom du champ de la colonne liée et non la valeur stockée. Je l'avais

    compris en faisant un déboguage pas-à-pas (F8).

    Je n'avais qu'à modifier mon instruction en ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.TOUTTC=Me.TOUTTC.Column(0,1)
    Conclusions:
    renvoie la valeur de la 1ère colonne de la première ligne de valeurs si En-tête colonnes=Non
    renvoie la valeur de la 1ère colonne de la première ligne de valeurs si En-tête colonnes=Oui

    Encore merci à tous.
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/10/2013, 20h04
  2. UI Sortable. Comment synchroniser deux listes ?
    Par quent. dans le forum jQuery
    Réponses: 3
    Dernier message: 28/03/2010, 00h03
  3. Synchroniser deux liste déroulantes
    Par Djik71 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2007, 15h11
  4. Synchroniser deux zones de listes en VBA
    Par gaelj dans le forum Access
    Réponses: 3
    Dernier message: 03/09/2006, 19h55
  5. [AJAX] Synchronisation de deux listes déroulantes
    Par Le Rebel dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/03/2006, 23h28

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