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 :

Mettre automatiquement un focus apres un evenement de flashage [AC-2003]


Sujet :

VBA Access

  1. #21
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Je m'apercois que le problème est plus grave..
    Lorsque je sélectionne une ligne pour la transferer de ma liste_destination vers ma listebox_source. Et Dés que je clique sur le bouton Droitegauche, toutes les lignes de ma listebox_Source passe dans la listebox_destination et sans me demander la saisie de l heure

  2. #22
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Ta demande au point #6 :

    Sur ma ListeBox_ Source (intitulee Liste_VracArrivee), lorsque je selectionne une ligne pour la transferer sur ma ListeBox_Destination ( intitulee Liste_ArriveeQuai ), je souhaiterais voir apparaitre un inputbox qui me demanderait l heure d'arrivee reelle (format hh:mm). Apres avoir entre cette heure reelle dans l inputbox, cette heure s'afficherait dans la ligne qui se trouverait dans la Listebox_destination.
    Et dans le cas d'une erreur de selection, ou je voudrais retransferer la ligne dans la ListeBox_Source, le champ "heure d'arrivee" disparaitrait.
    Je sais que je dois t en demander beaucoup...
    ne correspond pas à ton observation au point #20 :
    2) toutes mes heures réelles ont disparues de ma listebox_destination (listebox_ArriveeQuai)
    et ton message #21 :
    Je m'apercois que le problème est plus grave..
    Lorsque je sélectionne une ligne pour la transferer de ma liste_destination vers ma listebox_source. Et Dés que je clique sur le bouton Droitegauche, toutes les lignes de ma listebox_Source passe dans la listebox_destination et sans me demander la saisie de l heure
    Ce n'était pas le but???
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #23
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Je me suis peut etre mal exprimé..
    Je vais essayer d etre plus claire :

    le transfere d'une ligne de ma liste_boxSource vers la listebox_destination avec demande heure est validé

    Le problème se situe sur le transfere d'une ligne de ma listebox_destination vers ma listebox_source ( en somme le chemin inverse)
    Ce que j'aimerais, c'est pourvoir ,dans ma listebox_destination, sélectionner une ligne et la transferer dans ma listebox_source et ceci sans que l'on soit obliger de saisir l'heure.
    Actuellement, avec tes modifications, lorsque je selectionne une ligne de ma listebox_destination et que je souhaite la transferer dans ma liste_source, j'ai le resultat inverse. J'ai toutes les lignes de ma listebox_source qui sont transferées dans ma listebox_destination.

    Es ce plus claire madefemere..

  4. #24
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Mea culpa,

    L'argument "False" limitant la sélection trainait dans l'appel de la fonction que tu as donné et j'ai oublié de l'enlever.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Copie les élements sélectionnés vers la liste de gauche
    Private Sub DroiteGauche_Click()
    TransposerElement Liste_ArriveeQuai, Liste_VracArrivee, Null
    End Sub
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #25
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    c'est bon,
    j'ai trouve la source du problème
    c'etait dans la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Copie les élements sélectionnés vers la liste de gauche
    Private Sub DroiteGauche_Click()
    TransposerElement Liste_ArriveeQuai, Liste_VracArrivee, Null, False ' on met null pour ne pas demander l'heure
    End Sub
    Il fallait supprimer le paramètre "false"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CODE]'Copie les élements sélectionnés vers la liste de gauche
    Private Sub DroiteGauche_Click()
    TransposerElement Liste_ArriveeQuai, Liste_VracArrivee, Null

  6. #26
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    peut on passer à l'étape suivante ?...

    Je vais créer un troisième liste_box ( en fait il y en aura 4 en tout.. lol)
    Sur ce troisième listebox intitulé (Liste_MiseAquai), je vais inserer les lignes de la listebox intitulée Liste_ArriveeQuai, avec 3 inputBox successiff qui demanderaien :
    1) le numero de quai
    2) le nombre de produits
    3 ) l'immatriculation
    Uniquement aprés avoir rentrée ces 3 doonnées, la ligne selectionée de la Liste_ArriveeQuai sera transférée vers la Liste_MiseAquai.
    Le transfert se fera également par le biais d'un second bouton gauchedroit..

  7. #27
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    madefemere,
    Est il possible de transférer une ligne de la listebox_destination vers la troisème listebox ?

  8. #28
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Pourquoi non?
    Il faudrait savoir sur quelle table se trouve ces nouvelles informations.
    Y Rajouter une colonne "Sélection" et on y va comme la première méthode avec les 3 modules.

    Simple non ?
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #29
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour Madefemere,
    Alors Go pour la suite...lol
    mais avant, afin de pouvoir comprendre et améliorer ( dans le futur) les codes que l'on aura fait ( du moins que tu auras fait..lol) pourrais tu m'expliquer par du francais cette procédure :
    Merci

    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
    42
    43
    44
    Private Sub TransposerElement(Liste_VracArrivee As ListBox, Liste_ArriveeQuai As ListBox, prHeure_Exacte As Variant, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
     
     
    Dim i As Integer
    Dim Db As DAO.Database
    Set Db = CurrentDb
     
    With Liste_VracArrivee
    'S'il ne faut déplacer que les élements sélectionnés,
    If LimiteSelection Then
     For i = 0 To .ListCount - 1
      'si l'élement est sélectionné dans la liste source,
      'inverse le champ selection
     
      If .Selected(i) Then
        If IsNull(prHeure_Exacte) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=NOT Selection,Heure_Selection= Null WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=NOT Selection,Heure_Selection  = #" & prHeure_Exacte & "# WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
     
     
      End If
      End If
     Next i
     
    'sinon, permutte la globalité
    Else
     
     
     If IsNull(prHeure_Exacte) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection= Null"
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection=#" & prHeure_Exacte & "#"
        End If
        End If
    'Rafraichit la zone de liste source
    .Requery
    End With
    'Rafraichit la zone de liste destination
    Liste_ArriveeQuai.Requery
    End Sub

  10. #30
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Comme ça ? :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Private Sub TransposerElementBis(Liste_VracArrivee As ListBox, Liste_ArriveeQuai As ListBox, prHeure_Exacte As Variant, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
    'La fonction a comme arguments :
    '- Liste_VracArrivee : La zone de liste de départ (tu pouvais laisser le nom du tuto, ce n'est pas grave)
    '- Liste_ArriveeQuai : La zone de liste vers laquelle on envoie la sélection.
    '- prHeure_Exacte : C'est le paramètre "heure exacte" qui sera saisi dans l'inputbox. Inutile pour une utilisation standard du module
    'Sa présence dépend de la prochaine utilisation de la procédure.
    '- LimiteSelection : Vérifie si on sélectionne tous les éléments de la zone de liste ou non? Argument optionnel
     
    Dim i As Integer
    Dim Db As DAO.Database
    Set Db = CurrentDb
    'Avec la liste de départ, on fait :
    With Liste_VracArrivee
        'S'il ne faut déplacer que les élements sélectionnés,
        If LimiteSelection Then
            For i = 0 To .ListCount - 1
                'si l'élement est sélectionné dans la liste source,
                'inverse le champ selection
                If .Selected(i) Then
                    'Si une heure exacte n'a été saisie lors de l'appel de la fonction : Cas de retour de la zone de liste de la droite vers la gauche
                    If IsNull(prHeure_Exacte) Then
                        'Mettre à jour pour l'élément sélectionné dans la requête Rq_tb_Liaison : Selection = NOT Selection (inverser la sélection
                        'et Heure_Selection = Null
                        Db.Execute "UPDATE Rq_tb_Liaison SET Selection=NOT Selection,Heure_Selection= Null WHERE No_Liaison=" & _
                        Chr(34) & .Column(0, i) & Chr(34)
                    Else
                    'Si une heure a été transmise par la procédure,
                    'Mettre à jour pour l'élément sélectionné dans la requête Rq_tb_Liaison : Selection = NOT Selection (inverser la sélection
                    'et Heure_Selection = l'heure introduite
                        Db.Execute "UPDATE Rq_tb_Liaison SET Selection=NOT Selection,Heure_Selection  = #" & prHeure_Exacte & "# WHERE No_Liaison=" & _
                        Chr(34) & .Column(0, i) & Chr(34)
                    End If
                End If
            Next i
     
        'sinon, permutte la globalité
        Else
            'Même principe que précédemment mais sans limitation par rapport à la sélection.
            'Tous les éléments de la zone de liste passent d'un statut à l'autre
            If IsNull(prHeure_Exacte) Then
                Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection= Null"
            Else
                Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection=#" & prHeure_Exacte & "#"
            End If
        End If
        'Rafraichit la zone de liste source
        .Requery
    End With
    'Rafraichit la zone de liste destination
    Liste_ArriveeQuai.Requery
    End Sub
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  11. #31
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Super, ainsi je comprends un peu mieux ton code..

    Maintenant, continuons notre dossier...lol

    Je souhaite maintenant transferer des lignes de ma listebox_ArrivéeQuai vers ma nouvelle listebox_MiseAquai :
    Dés la sélection d'une ligne de ma listebox_arrivéeQuai, 5 inputbox s'affichent non pas simultanément mais successivement l'un aprés l autre :

    1) un 1er inputbox qui me demanderait : heure de mise à quai (format hh:mm)
    2) Aprés avoir référencé ce 1er inputbox, un deuxième inputbox apparaitrait qui me demanderait : le numero de quai
    3) Aprés avoir référencé ce deuxième inputbox , un troisième inputbox apparaitrait qui me demanderait : nombre de colis
    4)Aprés avoir référencé ce troisème inputbox , un quatrième inputbox apparaitrait qui me demanderait : immatriculation

    Dans la requete Rq_tb_Liaison , j'ai inséré les 4 nouveaux champs qui seront remplis à l'aides des inpubox:
    HeureMiseaQuai
    NbQuai
    NbColis
    Immt

    comment dois je m'yprendre:

  12. #32
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Donc, déjà vu que l'on va avoir des suites, il faudrait renommer correctement certains champs.
    J'imagine que quand tu parles de :
    Dans la requete Rq_tb_Liaison , j'ai inséré les 4 nouveaux champs qui seront remplis à l'aides des inpubox:
    HeureMiseaQuai
    NbQuai
    NbColis
    Immt
    C'est dans la table tb_Liaison ?

    1- Renommer le champ Boolean Selection dans la table tb_Liaison en SelectionArrivee.
    2- Faire les corrections adéquates dans les modules que tu utilises actuellement.
    Nous allons initialement créer des modules pour le transfert de la 2ème liste vers la troisième. On verra à la fin si c'est possible de factoriser tout ça et de n'avoir qu'un seul module pour les transferts du 1er vers 2, 2 vers 3 et 3 vers 4 (que tu comptes faire).
    3- Créer un champ SelectionMiseAQuai (Boolean) dans la table tb_Liaison qui va identifier si la MiseAQuai, les 4 nouveaux champs que tu viens d'ajouter sont renseignés.
    4- Mettre à jour les codes pour les 2 zones de listes précédentes pour que ça soit cohérent :

    Dans le code Form_Open, modifier les filtres des zones de listes :
    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
    Private Sub Form_Open(Cancel As Integer)
         ...
    With Me.Liste_VracArrivee
         ...
         strSQLWHERE = "WHERE NOT SelectionArrivee AND NOT SelectionMiseAQuai;"
         ....
    End With
    ...
    With Me.Liste_ArriveeQuai
         ...
         strSQLWHERE = "WHERE SelectionArrivee AND NOT SelectionMiseAQuai;"
         ...
    end With
    ...
    'Code suivant à ajouter pour la nouvelle zone de liste
    With Me.Liste_MiseAQuai
         ...
         strSQLWHERE = "WHERE SelectionArrivee AND SelectionMiseAQuai;"
         ...
    end With
    ...
    End Sub
    En lisant attentivement ton code, pourquoi tu répètes ici la définition de StrSQLSELECT et strSQLFROM alors que c'est la même pour tes 2 zones de textes ??
    Peut-être il est possible de trouver les données communes et définir une première fois et de rajouter certains champs et faire la concaténation après ?? Une idée...

    5- Créer un nouveau module pour la MiseAQuai qui va enregistrer la mise a quai ou annuler. Ce sera quelque chose du même genre que TransposerElement mais avec 4 arguments supplémentaires. Du genre :

    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
    42
    43
    44
    45
    Private Sub TransposerElementMisAQuai(Liste_Depart As ListBox, Liste_Destination As ListBox, prHeure_MiseAQuai As Variant, _
       Optional prNbQuai as Integer, Optional prNbColis as Integer, Optional prImmatriculation as Integer, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
     
    Dim i As Integer
    Dim Db As DAO.Database
    Set Db = CurrentDb
     
    With Liste_Depart
    'S'il ne faut déplacer que les élements sélectionnés,
    If LimiteSelection Then
     For i = 0 To .ListCount - 1
      'si l'élement est sélectionné dans la liste source,
      'inverse le champ selection
     
      If .Selected(i) Then
        If IsNull(prHeure_MiseAQuai ) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=NOT SelectionMiseAQuai, HeureMiseaQuai= Null, NbQuai=Null, NbColis=Null,Imm=Null WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=NOT SelectionMiseAQuai,HeureMiseaQuai  = #" & prHeure_MiseAQuai & "#, NbQuai=" & prNbQuai  _
            & ", NbColis=" & prNbColis  & ",Imm=" & prImmatriculation & "  WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
     
      End If
      End If
     Next i
     
    'sinon, permutte la globalité
    Else
     
     If IsNull(prHeure_Exacte) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=" & CInt(bolSelection) & " , HeureMiseaQuai= Null, NbQuai=Null, NbColis=Null,Imm=Null
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection=#" & prHeure_Exacte & "#"
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=" & CInt(bolSelection) & ",HeureMiseaQuai  = #" & prHeure_MiseAQuai & "#, NbQuai=" & prNbQuai  _
            & ", NbColis=" & prNbColis  & ",Imm=" & prImmatriculation 
        End If
        End If
    'Rafraichit la zone de liste source
    .Requery
    End With
    'Rafraichit la zone de liste destination
    Liste_Destination.Requery
    End Sub
    L'appel de la fonction de Arrivée vers Mise à quai avec les inputbox va se faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ArriveeMiseAQuai_Click()
    Dim 
    valHeureMiseAQuai = InputBox("Saisissez l'heure de la mise à quai format hh:mm")
    If IsDate(valHeureMiseAQuai) And InStr(valHeureMiseAQuai, ":") <> 0 Then
         ValNbQuai = InputBox ("Saisissez le numéro de quai")
         ValNbColis= InputBox ("Saisissez le nombre de colis")     
         ValImmatriculation= InputBox ("Saisissez l'immatriculation")     
    'Attention ici on considère que la personne a saisi les valeurs correspondants aux champs. Il n'y a pas de gestion d'erreur. Il faudrait rajouter des IF pour vérifier la qualité des valeurs saisies.
         TransposerElementMisAQuai Liste_ArriveeQuai, Liste_MiseAQuai, valHeureMiseAQuai, ValNbQuai, ValNbColis, ValImmatriculation, True
    Else
        MsgBox "la date saisie est incorrecte !"
    End If
    End Sub
    L'annulation : L'appel de la fonction de Mise à quai vers Arrivée va se faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MiseAQuaiArrivee_Click()
         TransposerElementMisAQuai Liste_ArriveeQuai, Liste_MiseAQuai, Null
    End Sub
    Encore des codes non testés. Voilà comment je vois la chose.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  13. #33
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour madefemere
    Depuis hier soir, je m'arrache les cheveux pour une brouduille j'en sure.
    Suite a tes conseils, j'ai allégé les requetes sql de mes deux liste box VracArrivee et Arrivée Quai :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Dim txt_ChaineSQL As String
    Dim Liste_VracArrivee As ListBox
    Dim Liste_ArriveeQuai As ListBox
    'Dim Liste_MiseAquai As ListBox
     
    'ListeBox_VracArrivee
    With Me.Liste_VracArrivee
        .ColumnHeads = True
        .ColumnCount = 7 ' nombre de colonne que dois avoir la listebox
        .BoundColumn = 1 ' la colonne de reference
        .RowSourceType = "Table/Requête"
     
     
     'Requete en SQL de "rq_tb_Liaison
     
    StrSQLSELECT = "SELECT tb_Liaison.No_Liaison, tb_ProvDest.Nom_Ville,tb_Liaison.Heure_Theo, tb_TypeLiaison.Type," & _
                 "tb_FrequenceLiaison.Frequence,tb_Remorque.No_remorque, tb_Liaison.Commentaires," & _
                 "tb_Liaison.SelectionArrivee"
     
    strSQLFROM = "FROM tb_FrequenceLiaison INNER JOIN (tb_ProvDest INNER JOIN (tb_TypeLiaison INNER JOIN" & _
                "(tb_Remorque INNER JOIN tb_Liaison ON tb_Remorque.id_remorque=tb_Liaison.No_Remorque) ON " & _
                "tb_TypeLiaison.id_TypeLiaison=tb_Liaison.Mvt_Type) ON tb_ProvDest.id_ProvDest=tb_Liaison.Prov_Dest)" & _
                "ON tb_FrequenceLiaison.id_TypeFrequence=tb_Liaison.Freq_Type"
     
    strSQLWHERE_NOT_SelectionArrivee = "WHERE NOT SelectionArrivee;" ' le critere WHERE NOT SelectionArrivee coorespond à la NON selection des lignes
                                                                     'de la listeboxListe_VracArrivee
     
     
     
     
    txt_ChaineSQL = StrSQLSELECT & vbCrLf & _
                    strSQLFROM & vbCrLf
     
     
        .RowSource = txt_ChaineSQL & strSQLWHERE_NOT_SelectionArrivee
        .Requery
      Debug.Print txt_ChaineSQL
     
    End With
     
     
    'ListeBox_ArriveeQuai
    With Me.Liste_ArriveeQuai
        .ColumnHeads = True
        .ColumnCount = 6 ' nombre de colonne que dois avoir la listebox
        .BoundColumn = 1 ' la colonne de reference
        .RowSourceType = "Table/Requête"
     
     
    '
    strSQLWHERE_SelectionArrivee = "WHERE SelectionArrivee;"
     
    txt_ChaineSQL = StrSQLSELECT & vbCrLf & _
                    strSQLFROM & vbCrLf
     
     
        .RowSource = txt_ChaineSQL & strSQLWHERE_SelectionArrivee   'le critere WHERE SelectionArrivee coorespond à la selection des lignes de la listebox
                                                             'Liste_VracArrivee. Ce qui revient à afficher dans la listebox_Liste_ArriveeQuai les
                                                             'lignes selectionnées de la listebox_ListeVracArrivee
     
        .Requery
      'Debug.Print txt_ChaineSQL
    End With
    End Sub
    mais là où je perds patience..
    c'est suite à la modification du champ Selection en champ SelectionArrivée
    J'ai apporté les modifications dans ma table et requete et dans les modules.
    Cependant, lorsque j'ouvre le formulaire, j'ai une boite de dialogue qui s'ouvre et qui me demande d'entrer le paramètre tb_Liaison.Selection.je tape Ok sans rien inscrire dans la boite de dialogue et la une seconde boite de dialogue apparait qui me demande d'entrer le paramètre Selection. Je tape OK sans rien inscrire dans la boite de dialogue et cela se repete 10 fois. ET puis mon formulaire s'ouvre normalement

  14. #34
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    c'est bon j'ai trouve le problème .
    c'etait une macro de mon formulaire.
    je l'aie désactivé.
    je peux repartir en mission...
    Je reviens vers toi aprés avoir mis en application tes dernières directives..

  15. #35
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    J'ai mis en place tes procédures et j'ai un bug au niveau de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ArriveeMiseAQuai_Click()
    J'ai une message d'erreur :
    erreur de compilation : type d'argument ByRef incompatible
    Et c'est l'argument ValNbQuai qui est souligné en jaune..

    Honnetement, ce type d'erreur c'est du charabia pour moi..

  16. #36
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour Madefemere
    Pour l'erreur c'est réparé. Je n'avais pas vue que dans ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Private Sub ArriveeMiseAQuai_Click
    les variables ValNbQuai, ValNbColis et ValImmatriculation n'étaient pas déclarées.
    C'est choses faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ArriveeMiseAQuai_Click()
    Dim valNbQuai As Integer
    Dim ValNbColis As Integer
    Dim ValImmatriculation As Integer ....
    cependant, ce n'est pas fini.. lol
    Lorsque j'ai rentré les differentes valeurs, j'ai un autre bug dans la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TransposerElementMisAQuai(Liste_Depart As ListBox, Liste_Destination As ListBox, prHeure_MiseAQuai As Variant, _
       Optional prNbQuai As Integer, Optional prNbColis As Integer, Optional prImmatriculation As Integer, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
    J'ai un message d'erreur qui apparait :
    erreur d'éxecution 3061 Trop peu de paramètre . 2 attendus
    je vais essayer de trouver le problème et je reviens vers toi ..

  17. #37
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Donc je te laisse mijoter tout ça.
    Ne lésines pas sur les Debug.print pour vérifier les données que tu passes dans tes procédures.
    J'espère que tu n'as pas oublié de paramétrer correctement la zone de liste de la MiseAQuai lors de l'ouverture de ton formulaire.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  18. #38
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Cela tombe bien lorsque tu me poses la question :
    J'espère que tu n'as pas oublié de paramétrer correctement la zone de liste de la MiseAQuai lors de l'ouverture de ton formulaire
    Qu'est ce que parametrer un formulaire lorsque l'on a le type d'erreur suivant
    erreur d'éxecution 3061 Trop peu de paramètre . 2 attendus

  19. #39
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Concernant l 'erreur
    erreur d'éxecution 3061 Trop peu de paramètre . 2 attendus
    J'ai modifié la syntaxe de la déclaration valHeureMiseAquai par heureMiseAquai.
    Et je n'ai plus d'erreur mais le problème n'est pas résolu.
    car lorsque je selectionne une ligne de la listebox_arrivéeQuai, j'ai les inputbox qui s'affiche successivement : HeureMiseAquai; NbQuai, NbColis et immat.
    Mais le transfère ne se fait pas.
    ET lorsque je lance le code pas à pas, au niveau de la pocédure :
    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
    42
    43
    44
    45
    Private Sub TransposerElementMisAQuai(Liste_VracArrivee As ListBox, Liste_MiseAquai As ListBox, prHeure_MiseAQuai As Variant, _
       Optional prNbQuai As Integer, Optional prNbColis As Integer, Optional prImmatriculation As Integer, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
     
    Dim i As Integer
    Dim Db As DAO.Database
    Set Db = CurrentDb
     
    With Liste_MiseAquai
    'S'il ne faut déplacer que les élements sélectionnés,
    If LimiteSelection Then
     For i = 0 To .ListCount - 1
      'si l'élement est sélectionné dans la liste source,
      'inverse le champ selection
     
      If .Selected(i) Then
        If IsNull(prHeure_MiseAQuai) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=NOT SelectionMiseAQuai, HeureMiseaQuai= Null, NbQuai=Null, NbColis=Null,Imm=Null WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=NOT SelectionMiseAQuai,HeureMiseaQuai  = #" & prHeure_MiseAQuai & "#, NbQuai=" & prNbQuai _
            & ", NbColis=" & prNbColis & ",Imm= " & prImmatriculation & "  WHERE No_Liaison=" & _
             Chr(34) & .Column(0, i) & Chr(34)
     
      End If
      End If
     Next i
     
    'sinon, permutte la globalité
    Else
     
     If IsNull(prHeure_Exacte) Then
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=" & CInt(bolSelection) & " , HeureMiseaQuai= Null, NbQuai=Null, NbColis=Null,Imm=Null"
        Else
            Db.Execute "UPDATE Rq_tb_Liaison SET Selection=" & CInt(bolSelection) & ",Heure_Selection=#" & prHeure_Exacte & "#"
            Db.Execute "UPDATE Rq_tb_Liaison SET SelectionMiseAQuai=" & CInt(bolSelection) & ",HeureMiseaQuai  = #" & prHeure_MiseAQuai & "#, NbQuai=" & prNbQuai _
            & ", NbColis=" & prNbColis & ",Imm=" & prImmatriculation
        End If
        End If
    'Rafraichit la zone de liste source
    .Requery
    End With
    'Rafraichit la zone de liste MiseAquai
    Liste_MiseAquai.Requery
    End Sub
    Le code passe de la ligne
    7-9-11-12-16-26-27-39-41-42 et sort de la procedure

    Que se passe t il ?.

  20. #40
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    La base est volumineuse?
    Est-ce que tu peux mettre une version "compactée", "zippée", en fait allégée et anonymisée à disposition parce que là je ne peux te dire pourquoi vu que j'ai écrit les codes à l'aveugle.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/04/2015, 16h43
  2. Réponses: 1
    Dernier message: 15/12/2014, 10h47
  3. Réponses: 19
    Dernier message: 23/02/2008, 19h19
  4. Réponses: 3
    Dernier message: 27/04/2006, 16h29
  5. Lancer automatiquement un programme après connexion Internet
    Par sunshine dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 27/05/2005, 22h18

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