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 :

Atteindre un enregistrement dans sous formulaire


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Atteindre un enregistrement dans sous formulaire
    Bonjour à tous

    voila je voudrai savoir si je peux, à partir d'une macro,
    atteindre un enregistrement dans un sous formulaire
    qui presente les enregistrements d'une table .

    Je pense que c'est possible mais je ne vois pas comment
    taper le code dans "référence" de la macro pour qu'elle se
    base sur la valeur mise dans un controle.

    je vous remercie d'avance
    Kyrha

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Logiquement c'est possible par macro, bien que cette méthode de programmation soit réservée à certains traitement (autoexec, menu...)

    Action : AtteindreEnregistrement
    Type d'objet : Formulaire
    Nom objet : le nom du sous formulaire
    Enregistrement : suivant, précédent...
    ou
    Référence : N° de l'enregistrement dans la liste.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    ok merci loufab mais je pense que j'ai mal expliqué mon probleme
    Je souhaite en fait que après MAJ du controle l'enregistrement soit selectionné automatiquement pour pouvoir vérifier son contenu et le modifier si besoin.

    Si une autre solution te parait meilleure pourrais tu
    m'en parler car je veux en fait créer un bouton pour modifier l'enregistrement une fois que ce dernier est selectionné

    Encore merci
    Kyrha

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    vu le peu de fonctionnalité des macros et qu'elles sont réservées à des traitement très particulier, je te suggère de faire ça en VBA.

    Le macro c'est mignon... mais que mignon.

    Pour cette fonctionnalité il faut passer par un recordset.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim rst As Recordset
    Set rst = Me.DETAILS_FACTURE.Form.Recordset
    rst.FindFirst "NumLigne=4"
    Me.DETAILS_FACTURE.Form.Bookmark = rst.Bookmark
    dans cet exemple DETAILS_FACTURE est le nom du controle contenant le sous-formulaire.
    Numligne est le nom du champ ou se trouve l'info à rechercher
    4 est l'information à rechercher dans le champ NumLigne.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Ayé j'ai essayé ta proposition et en effet sa fonctionne
    Il est vrai que les macros ne possèdent pa beaucoup de fonction
    mais étant débutant sous access j'ai un peu de mal à m'imaginer
    de quelle fonction me servir

    Je te remercie encore des tes réponses détaillées

    juste une autre petite question:
    si je veux utiliser le même code pour une zone de liste dans
    un autre formulaire pour la même fonctionnalité
    - puis-je?
    - si oui quel qualificatif dois-je mettre à la place de ".Form"

    Mes respects
    Kyrha

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Non bien évidemment car sa structure ne peut être traité par recordset (même si elle peut en contenir).
    Il faut utiliser les propriétés et méthode du controle, autrement dit un balayage séquentiel des items de la liste.

    Je te livre ici un exemple à adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim j As Integer
    Dim i As Integer
     
    For j = 1 To Me.lst_resultat.ListCount - 1     'balayage de la liste
        ' repere ce qui nous 
        If Me.lst_resultat.ItemData(j) Like "*411*" Then  interesse
            ' traite le résultat
            Debug.Print Me.lst_resultat.Column(1, j)
        End If
    Next j
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    je n'ai pas trop compris ton code

    j'ai essayé de l'adapter mais je ne comprends pas pourquoi
    déclarer "i" alors que l'on ne n'utilise pas
    alors voila comment je l'ai adapté
    puis-je savoir ce qu'il ne va pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande35_Click()
    Dim j As Integer
    For j = 1 To Me.lst_resultat.ListCount - 1  
     
        If Me.lst_resultat.ItemData(j) Like "*Texte32*" Then
     
            Debug.Print Me.lst_resultat.Column(1, j)
        End If
    Next j
    End Sub
    où "texte32" est mon controle, commande35 un bouton et lst_resultat ma liste

    en fait j'ai créé un message box pour afficher sur quel critere il balaye
    et ce critere c'est avérer ne pas etre le bon ms je ne sais pas comment
    changer la colone qu'il balaye alors sa serait sympas si quelqu'un pouvait m'aider

    encore merci

    Mes respects
    Kyrha

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Oui effectivement i est de trop. A l'origine il y avait 2 balayage (1 pour les items de lst_resultat l'autre pour le balayage des colonnes de chaque item)

    En ce qui concerne ton problème il faut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .... Like ""*" & me.critère32.value & "*"""
    value étant facultatif.

    Pour changer la colonne il faut jouer avec le 1 de column(1,j) sachant que 0 est la première.

    N'oublie pas de mettre ton post Résolu si c'est bon. Merci
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Alors voila mon probleme subsiste

    peut importe la valeur que je rentre dans "column"
    access balaye toujours la meme qui est une date

    ce qui bien evidement entraide une erreur de compabilité

    voulant balayé dans la premiere colone j'ai écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Me.lst_resultat.Column(0, j)
    ce qui d'après tes dires devrai etre correct non?

    s'il vous plait aidez moi

  10. #10
    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 nous indiquer la source de ta liste déroulante ? En fait le numéro de la colonne que tu indiques doit correspondre à la position du champ, dans la requête source de ta liste, que tu souhaites balayer.
    Attention : comme te l'a précisé Loufab, il y a un décalage de 1 entre la position du champ dans la requête source et le N° de la colonne utilisé dans le code. Pour le code, le premier champ de la requête source commence en position 0 et ainsi de suite.
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

Discussions similaires

  1. Atteindre un enregistrement dans un formulaire
    Par devdev dans le forum VBA Access
    Réponses: 6
    Dernier message: 16/04/2009, 16h49
  2. Pas d'enregistrement dans sous formulaire
    Par Spanish_ dans le forum IHM
    Réponses: 2
    Dernier message: 28/11/2007, 11h16
  3. Réponses: 5
    Dernier message: 13/04/2007, 16h12
  4. Réponses: 3
    Dernier message: 31/07/2006, 18h25
  5. Recherche enregistrement dans sous formulaire
    Par 29041977 dans le forum Access
    Réponses: 1
    Dernier message: 09/05/2006, 15h18

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