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. #41
    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
    Ok je t 'envoie tout cela en zip.
    et cela ne sera pas en anonyme.
    Peut-être une piste : la requête mise à jour
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    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)
    ne donne aucun résultat

  2. #42
    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 je n'arrive aps à t 'envoyer le fichier access même zipé

  3. #43
    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 facteur,

    Les erreurs étaient effectivement dues à des erreurs dans l'orthographe des champs de la table tb_Liaison et des champs indiqués dans le code VBA.
    Mais je te conseille aussi d'être plus rigoureux dans l'indentation de ton écriture de code VBA parce que ça devient un peu difficile après de suivre ce que tu écris.
    Prends l'habitude de supprimer carrément les lignes fausses dans ton code.
    Et relis le tuto sur VBA parce que tu t'emmêles les pinceaux dans les arguments des procédures et leurs appels. Ce qui fait que tu as du mal à reprendre les exemples.

    Cordialement et 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

  4. #44
    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 vais suivre tes conseilles madefemere.
    Je vais créer la dernière listebox_ Listebox_Remorque terminee
    Et je reviens vers toi lorsque j'ai terminée ou si je bloque..
    Mais avec ce que tu as fait , je pense pouvoir avancer sur le sujet..

  5. #45
    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
    Dans la liste box Liste_MiseAquai, Lorsque je selectionne la ligne et que j'insere dans l'inputbox l heure de fin de dechargement, la ligne est bien transferée dans ma dernière listebox Liste_VracTerminee.
    Mais la ligne selectionnée ne disparait de la listebox source c'est à dire Liste_MiseAquai.

    Est ce du au code suivant plus précisement, a la ligne 6:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'ListeBox_Liste_VracTerminee
    With Me.Liste_VracTerminee
    .ColumnHeads = True
    .ColumnCount = 13
    .RowSourceType = "Table/Requête"
    strSQLWHERE = "WHERE SelectionMiseAQuai AND SelectionTerminee;"
     
        txt_ChaineSQL = StrSQLSELECT & vbCrLf & _
                    strSQLFROM & vbCrLf
        .RowSource = txt_ChaineSQL & strSQLWHERE
        .Requery
     
    End With

  6. #46
    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 facteur,

    Tu n'as pas mis la totalité des codes comme demandé.
    Il manque la définition de la zone de liste lors de la mise à quai.
    Il faut la filtrer aussi selon si la mise en vrac est terminée et la mise à quai n'est plus faite.

    En fait tu as 3 zones de listes (Vrac - MiseAQuai - VracTerminee) et 3 états (Selection - SelectionMiseAQuai - SelectionVracTerminee).
    Les Transferts de tes données entre les 3 zone de liste vont se faire selon que Selection - SelectionMiseAQuai - SelectionVracTerminee soient à Oui/Non et leurs combinaisons.

    Cela te va??

    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

  7. #47
    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 madefemere,
    j'ai trouve le problème.
    Effectivement c'etait au niveau des selections ..
    avant de continuer, pourrais avoir tes lumières sur quelques que j'ai du mal à comprendre.

    comment dois je interpreter l'explication :
    '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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            '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 SelectionArrivee=" & CInt(bolSelection) & ",Heure_Selection= Null"
            Else
                Db.Execute "UPDATE Rq_tb_Liaison SET SelectionArrivee=" & CInt(bolSelection) & ",Heure_Selection=#" & prHeure_Exacte & "#"

  8. #48
    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
    En fait cette partie de la code "n'est pas nécessaire" pour ton cas.
    Elle concernait les cas où on basculait la totalité des éléments d'une liste vers l'autre.
    Si tu fais un pas à pas, tu verras que le cas ne se présent jamais.

    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

  9. #49
    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 ce que je me disais aussi
    Madefemere, continuons donc à améliorer cette base de donnée:
    J'ai plusieurs petits defauts à corrgier :
    1) Le bouton de commande intiulé GaucheDroite permet le transfert (aprés avoir réference l'heure) d'une ligne de la listebox Liste_ArriveeQuai vers la listebox Liste_VracArrivee.
    Lorsque je selectionne une ligne qui se trouve dans la Liste_VracArrivee et que je clic sur le bouton GaucheDroite , j'ai l'inputbox qui s'affiche et qui me demande d'entrer une heure.
    Comment pourrais je empecher cette manip qui n'a aucun sens car c'est au travers d'un autre bouton de commande que je vais selectionner cette ligne pour la transferer vers la listebox Liste_MiseAQuai.

    Je ne sais pas si j'étais claire..

  10. #50
    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
    En fait tu veux inhiber la fonction si aucun élément n'est sélectionné dans la liste de départ.

    Il faut vérifier qu'un élément est bien séléctionné dans la liste de départ. Exemple avec une fonction du genre (j'ai mis 2 méthodes pour modifier la valeur, à toi de voir):
    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
    Private Function ListeSelection(prListe As ListBox) As Boolean
    Dim i As Integer
    ListeSelection = False
    With prListe
    Debug.Print .ItemsSelected.Count
    'Méthode 1
    ListeSelection = IIf(.ItemsSelected.Count = 0, False, True)
    'Méthode 2 -------
        'For i = 0 To .ListCount - 1
        '   If .Selected(i) Then
        '        ListeSelection = True
        '        Exit Function
        '   End If
        'Next i
    'Fin Méthode 2
    End With
    End Function
    Ensuite tu conditionnes l'activation du bouton en appelant cette fonction avec la zone de liste correspondante (à tester). Exemple avec le bouton GaucheDroite dont tu parles, ce sera :
    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 GaucheDroite_Click()
    'Vérifies si un élément au moins est sélectionné dans la zone de liste
    If ListeSelection(Liste_VracArrivee) Then
        'Copie les élements sélectionnés vers la liste de droite
        Heure_Exacte = InputBox("Saisissez l'heure exacte format hh:mm")
        If IsDate(Heure_Exacte) And InStr(Heure_Exacte, ":") <> 0 Then
            TransposerElement Liste_VracArrivee, Liste_ArriveeQuai, Heure_Exacte
        Else
            MsgBox "la date saisie est incorrecte !"
        End If
    End If
     
    End Sub
    La fonction peut être appelé pour les 6 autres boutons.

    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. #51
    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,
    J'opte pour la méthode 1 qui est plus simple.
    Afin de mieux appréhender le code, pourrais tu m'expliquer ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeSelection = IIf(.ItemsSelected.Count = 0, False, True)

  12. #52
    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
    la fonction IIF est comme quand on utilise IF, mais elle renvoie un résultat. Comme SI sous Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeSelection = IIf(.ItemsSelected.Count = 0, False, True)
    Pseudo-code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si .ItemSelected.Count = 0 'Propriété pour compter le nombre d'éléments sélectionnés dans un listbox
    Alors
    ListeSelection = Faux
    Sinon
    ListeSelection = Vrai
    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. #53
    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
    merci pour cette explication
    Encore une autre question : Au niveau de la procédure
    Private Sub TransposerElementMisAQuai(Liste_Depart As ListBox, Liste_Arrivee As ListBox, prHeure_MiseAQuai As Variant, _
    Optional prNbQuai As Integer, Optional prNbColis As Integer, Optional prImmatriculation As String, _
    Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
    Que signfie les 2 lettres "pr" qui précedent les variables NbQuai, NbColis et prImmatriculation ?
    Ces 2 lettres ont elles une significations particulière en vba ?

  14. #54
    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
    Non ce sont des noms libre de variable.
    C'est un peu une convention que j'essaie d'utiliser pour savoir que quand j'ai un pr ça veut dire que c'est le paramètre de la procédure ou fonction.

    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

  15. #55
    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
    ok..j'arrive peu à peu à comprendre tes codes..

  16. #56
    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
    toujours dans le cas de cette convention d'écriture :
    dans la procé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
    Private Sub TransposerElement(Liste_Depart As ListBox, Liste_Arrivee As ListBox, prHeure_Exacte As Variant, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
    '- 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.
     
     
    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
     
                '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
    ....
    Au niveau de la ligne 1 et 20 tu déclares le paramètre Heure_Exacte par "prHeure_Exacte"

    Et au niveau de la procédure,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub GaucheDroite_Click()
    'Copie les élements sélectionnés vers la liste de droite
    Heure_Exacte = InputBox("Saisissez l'heure exacte format hh:mm")
    If IsDate(Heure_Exacte) And InStr(Heure_Exacte, ":") <> 0 Then  'InStr(Heure_Exacte, ":") se traduit contient l'Heure_Exacte et les :
     
        TransposerElement Liste_VracArrivee, Liste_ArriveeQuai, Heure_Exacte
    Else
        MsgBox "la date saisie est incorrecte !"
    End If
    End Sub
    Au niveau de la ligne 3 et 6, tu déclare le même parmètre Heure_Exacte mais sans précédé par "pr" ?

    Quel serait l'inconvénient si au niveau de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TransposerElement
    , sur le parmètre "prHeure_Exacte", je supprimerais l'abréviation "pr" ?

  17. #57
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub TransposerElement(Liste_Depart As ListBox, Liste_Arrivee As ListBox, prHeure_Exacte As Variant, _
      Optional LimiteSelection As Boolean = True, Optional bolSelection As Boolean = True)
    C'est la définition de la procédure TransposerElement qui a comme arguments Liste_Depart, .....prHeure_Exacte,...
    Ces arguments sont utilisés dans cette procédure pour arriver à une certaine résultat.

    Ensuite, cette procédure (ou fonctions) peut être appelée par d'autres fonctions avec leurs propres arguments.
    Donc, dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub GaucheDroite_Click()
    'Copie les élements sélectionnés vers la liste de droite
    Heure_Exacte = InputBox("Saisissez l'heure exacte format hh:mm")
    If IsDate(Heure_Exacte) And InStr(Heure_Exacte, ":") <> 0 Then  'InStr(Heure_Exacte, ":") se traduit contient l'Heure_Exacte et les :
     
        TransposerElement Liste_VracArrivee, Liste_ArriveeQuai, Heure_Exacte
    Else
        MsgBox "la date saisie est incorrecte !"
    End If
    End Sub
    J'appelle la procédure TransposerElement de la façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TransposerElement Liste_VracArrivee, Liste_ArriveeQuai, Heure_Exacte
    où Liste_VracArrivee va prendre la place de Liste_Depart, Liste_ArriveeQuai celle de Liste_Arrivee et Heure_Exacte celle de prHeure_Exacte.
    Les arguments précédés d'un "Optional" peuvent être omis.

    Comme je te disais, je te conseille la lecture de ce TUTO SUR VBA

    OK :: ?
    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. #58
    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'avais bien compris que chaque procédure à ces propres paramètres. et d'ou on peut appeler d'autres procédures...
    J'ai fait un test ou j'ai supprimé ton abréviations pr sur tous les paramètres et je n'ai pas d'erreur qui s'affiche et tout fonctionne à merveille.
    Donc, si je dis que pour un meilleur suivi des paramètres , je préfère voir afficher ces parmètres de la même façcon sur toutes les procédures , est ce une erreur ?

    Et je vais lire le tuto sur VBA

  19. #59
    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,

    Tu n'as pas d'erreur en supprimant le pr parce que l'écriture de notre code n'est pas assez rigoureux.
    Nous n'avons pas mis "Option Explicit" dans l'en-tête de module pour obliger les déclarations des variables utilisés.
    De plus, nous sommes dans un seul module de formulaire, donc pas de problème, Heure_Exacte voudrait dire la même chose dans toutes les procédures.
    Mais imagine-toi si tu as d'autres modules de formulaire où tu vas utiliser le même nom de variable "Heure_Exacte"? Comment Access va les identifier?

    Voilà...
    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

  20. #60
    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 comprends...
    Demain, je t'embeterais avec mon soucis des inpubox..
    Je te souhaite une excellent soirée et à demain mademère

+ 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