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 :

Se positionner sur un enregistrement précis dans une table


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Points : 70
    Points
    70
    Par défaut Se positionner sur un enregistrement précis dans une table
    Bonjour,

    Désolé, mais je crois bien que je vais passer pour un nul.. pas moyen de trouver ça dans le forum, ni dans la FAQ

    Je cherche la possibilité de rendre actif dans une table l'enregistrement qui contient un mot particulier.
    Par exemple le mot "BLEU" dans le champ "COULEUR"

    Je sais accéder à la 25ème ligne d'une table par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.GotoRecord acDataTable, "Nomtable", acGoTo, 25
    mais là, je sèche.. quelqu'un pourrait m'aider ?

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    bonjour
    Fais une recherche sur les recordsets. ça sera plus souple pour toi; je crois.
    @+

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

    Pour information on ne travail jamais directement sur les tables, mais on passe par l'intermédiaire d'un formulaire.

    Philippe

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 702
    Points : 57 274
    Points
    57 274
    Billets dans le blog
    41
    Par défaut
    bonjour,

    par exemple, sur l’évènement Ouverture du formulaire dépendant de ta table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Open(Cancel As Integer)
    Dim rst As DAO.Recordset
    Dim ChoixCouleur As Variant
     
    ChoixCouleur = InputBox("quelle couleur ?")
     
    Set rst = Me.RecordsetClone
    rst.FindFirst "COULEUR = '" & ChoixCouleur & "'"
            If Not rst.NoMatch Then
                Me.Bookmark = rst.Bookmark
    	Else
            MsgBox ("pas trouvé la couleur " & ChoixCouleur)
            End If
    End Sub

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Points : 70
    Points
    70
    Par défaut
    Hum.. merci pour vos réponses...

    Reprenons mon exemple (un peu farfelu, ok) de la table des couleurs

    J'ai donc une table avec un champ "COULEUR", et de très nombreux enregistrements, tous uniques.

    Je demande à l'utilisateur par Intputbox de me préciser la couleur des enregistrements qu'il souhaite isoler.

    Je me positionne sur chacun de ces enregistrements, que je copie dans une nouvelle table pour lui expédier par SendObject, et que je supprime illico de ma première table.

    On peut faire ça par le biais d'un formulaire ?? je suis volontaire pour prendre des cours..

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 702
    Points : 57 274
    Points
    57 274
    Billets dans le blog
    41
    Par défaut
    Bonjour,

    un peu de SQL alors… :

    Je me positionne sur chacun de ces enregistrements…
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT champ1, champ2,… 
    FROM LaTable 
    WHERE Couleur=[Choix couleur ?] ;

    … Je me positionne sur chacun de ces enregistrements, que je copie dans une nouvelle table…
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO LaNouvelleTable (champ1, champ2, …) 
    SELECT champ1, champ2,… 
    FROM LaTable 
    WHERE Couleur=[Choix couleur ?] ;

    …et que je supprime illico de ma première table…
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE * 
    FROM LaTable 
    WHERE Couleur=[Choix couleur ?] ;

    Voir aussi dans la FAQ Access:
    Comment utiliser la valeur d'une variable vba dans une requête Access ?

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Points : 70
    Points
    70
    Par défaut
    effectivement, c'est basique en SQL.. mais puis-je dans ce cas conserver la couleur en variable ?? sachant que je souhaite donner à ma nouvelle table le nom de cette variable (ici, la couleur)

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    En VBA :

    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
    Docmd.SetWarnings = False
         'On demande la couleur
    strCouleur = InputBox ("Couleur : ")
     
         ' On créer la table avec comme nom la couleur saisie
    strSQL = " CREATE TABLE " & strCouleur & "(" & _
                 " Champ1 Type " & _
                 " ,Champ2 Type....... )  "
    Docmd.runSQL strSQL
     
         ' On y insère les enregistrements
    strSQL = " INSERT INTO " & strCouleur & " (champ1, champ2, …)  " & _ 
                 " SELECT champ1, champ2,…  " & _
                 " FROM LaTable  " & _
                 " WHERE Couleur = '" & strCouleur  & "'  ; "
    Docmd.runSQL strSQL
     
        'Qu'on supprime de l'ancienne table
    strSQL = " DELETE FROM LaTable " & _
                 " WHERE Couleur = '" & strCouleur & "' ;"
    Docmd.runSQL strSQL
     
    Docmd.SetWarnings = True
    En espérant que ça t'aidera

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Je n'utilise jamais le SQL à l'intérieur du VBA, et je vois que je passe à côté de quelque chose d'essentiel..

    merci beaucoup !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2014, 11h14
  2. Réponses: 7
    Dernier message: 15/05/2012, 17h26
  3. Réponses: 5
    Dernier message: 28/06/2007, 16h58
  4. Réponses: 4
    Dernier message: 02/02/2007, 08h41
  5. URGENT - Nombre d'enregistrements différents dans une table
    Par Jeankiki dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/08/2004, 15h51

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