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 :

Trie d'une table depuis un formulaire en VBA


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Trie d'une table depuis un formulaire en VBA
    Bonjour,

    Toujours dans le cadre de mon apprentissage des recordset et recodsetclone pour manipuler les enregistrements d'une table et les copier vers une une autre...
    Pouvez-vous me dire pourquoi, dans le code ci-dessous, cette ligne ne fonctionne pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Me.T_Prenom1.Form.SetOrderBy "Prenom" '(avant de transferer mes enregistrements, je souhaite trier T_Prenom1 par Prenom, via code VBA )
    Sans cette ligne, le transfert des enregistrements de T_Prénom1 vers T_Prénom2 fonctionne bien.

    Je vous mets mon fichier.zip en pièce jointe pour test si vous le souhaitez.

    Prenom.zip

    D'avance MERCI pour vos explications,
    cordialement,
    Serge.



    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
    Private Sub Btn_Transfert_Click()
     
    Dim dbs As DAO.Database: Set dbs = CurrentDb
    Dim rst As DAO.Recordset
    Dim sqlPrenom1, sqlPrenom2 As String
     
    sqlPrenom2 = "DELETE * FROM T_Prenom2;"
    'dbs.Execute sqlPrenom2, dbFailOnError
    DoCmd.RunSQL sqlPrenom2
     
    sqlPrenom2 = "SELECT * FROM T_Prenom2;"
    Set rst = dbs.OpenRecordset(sqlPrenom2, 2, 512)
     
    If Not Me.T_Prenom1.Form.RecordsetClone.EOF Then
    'Me.T_Prenom1.Form.SetOrderBy "Prenom" '(avant de transferer mes enregistrements je souhaite trier T_Prenom1, via code VBA, , par Prenom)
        With Me.T_Prenom1.Form.RecordsetClone
            .MoveFirst
            Do While Not .EOF
                rst.AddNew
                rst!ID = !ID
                rst!Prenom = !Prenom
                rst!Age = !Age
                rst!Couleur = !Couleur
                rst.Update
            .MoveNext
            Loop
        End With
    End If
     
    rst.Close
    dbs.Close
    Set rst = Nothing
    Set dbs = Nothing
     
    Me.T_Prenom2.Form.Requery
     
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Sauf erreur de ma part SetOrderBy n'est pas une méthode de l'objet Form mais est associé à DoCmd.
    Donc quand tu exécutes tu dois avoir une erreur du type Méthode non supporté par l'objet.

    De mémoire pour un objet Form c'est OrderBy.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    salut
    cet objet Me.T_Prenom1.Form, se trouve ou dans votre form ? Il n'existe pas ! Vous avez glissé la T_Prenom1, dans le form !
    Il me semble que dans d'autres fils il vous a été conseillé de créer des sform en lieu et place de glisser des tbl !

    A lire Méthode DoCmd.SetOrderBy. Par feuille de données comprendre table !
    Je en sais pas si ChatGPT ferait mieux dans la traduction !
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Trie d'une table depuis un formulaire en VBA
    Merci marot_r et hyperion13 pour vos réponses :

    marot_r ;
    effectivement SetOrderBy n'est pas une methode de l'object Form, mais avec OrderBy cela ne fonctionne pas non plus !

    hyperion13 ;
    oui effectivement dans un message précedant vous m'aviez déjà conseillé de passer par un sous-formulaire, mais comme je l'ais déjà évoqué, je ne souhaite pas utiliser cette possibilté.
    Je suis en phase d'apprentissage et je cherche à comprendre comment réaliser mon tri directement sur la table présente dans le formulaire via le code VBA, comme il est tout à fait possible de le faire en interactif (clic sur le champ puis tri par ordre croissant ou décroissant d'ailleurs).

    En tous cas MERCI pour vos réponses,
    cordialement,
    Serge

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    effectivement SetOrderBy n'est pas une methode de l'object Form, mais avec OrderBy cela ne fonctionne pas non plus !
    Et cela ne fonctionne pas comment ?
    • Il ne se passe rien ? Si oui, as-tu vérifier si le code est exécuté ?
    • Il y a une erreur ? Si oui, laquelle ?
    • Il se passe quelque chose mais pas ce qui est attendu ? Si oui, que se passe-t'il ?
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    re
    une idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.OpenTable "T_Prenom1"
    DoCmd.SetOrderBy "Prenom"
    DoCmd.Close acTable, "T_Prenom1", acSaveYes
    Me.Table_T_Prenom1.Requery
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Pouvez-vous me dire pourquoi, dans le code ci-dessous, cette ligne ne fonctionne pas ?
    avec Recordset (et Clone) l'ordre de tri fonctionne avec sa propriété Sort mais il faut utiliser un Recordset temporaire pour l'appliquer (comme indiqué dans l'aide ici, voir également le code donné en exemple) autant passer par un SQL:

    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
    If Not Me.T_Prenom1.Form.RecordsetClone.EOF Then
        dim stSQL as String
        dim rst1 as recordset
     
        ' suppression de la fin d'instruction SQL (si c'est une requête)
        stSQL = Replace(Me.T_Prenom1.Form.RecordsetClone.Name, ";", "")
     
        ' construction de la nouvelle requête
        stSQL = "SELECT * FROM (" & stSQL & ") ORDER BY Prenom;"
        Set rst1 = dbs.OpenRecordset(stSQL)
     
    With rst1
            .MoveFirst
            Do While Not .EOF
    		' etc.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Suite : Trie d'une table depuis un formulaire en VBA
    Bonjour à tous et MERCI pour vos réponses.
    Je n'ai pas eu suffisemment de temps ces derniers jours pour mettre en application vos propositions, mais je ne manquerai pas de vous tenir informés des résultats dès le necessaire fait.
    Merci d'accepter mes excuses pour le manque de réactivité.
    Cordialement,

  9. #9
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Fin: Trie d'une table depuis un formulaire en VBA
    Bonjour à tous,

    Voici donc la réponse à la question que je me posais dans cet exercice.
    Dans mon tout premier message j'avais écrit ce code : Me.T_Prenom1.Form.SetOrderBy "Prenom"
    et en fait le code qui fonctionne bien c'est le suivant : DoCmd.SetOrderBy "Prenom", "T_Prenom1" (Prenom c'est le nom du champ que je souhaite trier et T_Prenom1 le nom de la table dans le formulaire).
    Il y avait donc un sérieux problème de syntaxe et c'est pour cela que cela ne fonctionnait pas.
    Je constate également que l'action de trier la table dans le formulaire n'agit pas du tout sur la table elle même. J'en déduis donc que dans le formulaire ce n'est pas la table qui est visualisée, mais je dirais, "l'image de la table"...

    Je vous remercie encore tous pour vos messages qui m'aident à "avancer" dans la compréhension de la programmation VBA.
    Cette question est résolue, mais je sais que j'aurais encore besoin de vos éclairages pour d'autres sujets très prochainement
    Cordialement,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/09/2021, 18h56
  2. [AC-2016] Pb de nouvel ajout dans une table depuis un formulaire
    Par bulbiza dans le forum Access
    Réponses: 10
    Dernier message: 08/10/2017, 18h19
  3. [AC-2013] Enregistrement dans une table depuis un formulaire
    Par juju6612 dans le forum Access
    Réponses: 17
    Dernier message: 01/08/2016, 09h47
  4. [MySQL] Requête des données d'une table depuis un formulaire
    Par hnicola dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/09/2009, 23h26
  5. Réponses: 5
    Dernier message: 09/10/2008, 19h14

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