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

IHM Discussion :

Débuter avec ACCESS


Sujet :

IHM

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Débuter avec ACCESS
    Bonjour,

    Je débute avec ACCESS mais je suis bien familiarisé avec le langage VBA surtout sur Excel.
    Ce que je souhaiterais faire, c'est pouvoir faire une boucle sur un champ d'un formulaire pour en tester les valeurs.
    Et c'est là le drame...
    J'en perds mon latin, si quelqu'un aurait la gentillesse de bien vouloir m'aiguiller pour que je puisse débuter

    Merci infiniment,

    Jeremy

  2. #2
    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,

    Peux-tu préciser ta demande :
    1- boucle sur les valeurs d'un champ d'un formulaire
    2- ou boucle sur tous les champs d'un enregistrement d'un formulaire.

    et quel est le but ?

    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre aide.

    Je souhaite boucler sur les valeurs d'un champ d'un formulaire, les valeurs étant des cases à cocher (oui/non)
    Si la valeur est égale à oui, j'aimerais pouvoir récupérer certaines valeurs des champs voisins.

    Sous Excel, ça donnerait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 to derlign
            If range("A" & i) = "oui" then
                message = message & range("B" & i) & " " & range("C" & i) & chr(10)
            end if
        next i
     
    MsgBox message
    Si j'arrivais déjà à ça

    Le but final étant d'intégrer la variable 'message' dans un mail

    j'aimerai également pouvoir modifier un champ si la condition oui est remplie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If range("A" & i) = "oui" then
            range("E" & i) = date du jour par exemple
    end if

    Merci,

    Jeremy

  4. #4
    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
    bonsoir,
    c'est presque comme Excel sauf qu'il faut déclarer le jeu d'enregistrements à mettre à jour. Dans le cas d'un formulaire, c'est simple: il suffit d'utiliser un clone du Recordset:
    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
    Dim oRS As Recordset                                'Déclaration du jeu d'enregistrements
    Set oRS = Me.RecordsetClone                         'Affectation du jeu d'enregistrements avec un clone de celui du formulaire
     
    If oRS.RecordCount > 0 Then
         oRS.MoveFirst
         Do Until oRS.EOF                               'Boucle sur tous les enregistrements
            If oRS("CaseAcocher") = True Then           'On teste la condition pour mise à jour
                oRS.Edit                                'On édite le champ de l'enregistrement
                oRS.Fields("ChampAMettreAJour") = Date  'Mise à jour du champ avec Date du jour
                oRS.Update                              'Validation de la mise à jour
            End If
            oRS.MoveNext                                'On passe à l'enregistrement suivant
         Loop
    End If
    Set oRS = Nothing
    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 ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour ce début de piste, j’ai pu trouver la suite
    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
    Dim oRs As Recordset 
     
    Set oRs = Me.RecordsetClone
     
    If oRs.RecordCount > 0 Then
    If oRs.EOF Then exit sub
    Do Until oRs.EOF
    If oRs.Fields(nom du champ) = ´Vrai ´ Then
     
    End If
    oRs.MoveNext
    Loop
    End if
     
    Set oRs = Nothing
    Ce code je l’ai assigné à un bouton, mais je ne peux le lancer qu’une seule fois, il me faut fermer le formulaire puis le rouvrir.
    Idem, si j’ouvre le formulaire, j’y fais des modifications, celles-ci ne sont pas prises en compte.

    Est-ce que vous connaissez les raisons à ces problèmes ?

    Merci et bonne soirée

    JeremyW

  6. #6
    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,
    Ce code je l’ai assigné à un bouton, mais je ne peux le lancer qu’une seule fois, il me faut fermer le formulaire puis le rouvrir.
    Idem, si j’ouvre le formulaire, j’y fais des modifications, celles-ci ne sont pas prises en compte.
    ajoute Me.ReCalc après la boucle (l'instruction Loop) ou après les instructions de mise à jour, cela met à jour le jeu d'enregistrements du formulaire à partir du clone.
    Tu peux aussi utiliser directement le Recordset, mais l'avantage du clone, c'est que le formulaire ne "flashe" pas lors de la mise à jour puisque tout est mis à jour en une seule fois après une mise à jour depuis une boucle.
    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 ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour tee_grandbois,

    Merci pour ton aide, j'essai de me dépatouiller.

    J'ai ce code, qui s'execute au clic pour mettre à jour une liste d'actions (0 et -1 étant les valeurs des cases à cocher issues de la table)
    Ce que je ne comprend pas, c'est que ça fonctionne mais ne prends jamais en compte la dernière ligne

    Merci pour ton aide,

    Belle soirée,

    Jeremy

    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
    Dim oRS As Recordset                                'Déclaration du jeu d'enregistrementsSet oRS = Me.RecordsetClone                         'Affectation du jeu d'enregistrements avec un clone de celui du formulaire
     
    Set oRS = Me.RecordsetClone                         'Affectation du jeu d'enregistrements avec un clone de celui du formulaire
     
     
    If oRS.RecordCount > 0 Then
         oRS.MoveFirst
         Do Until oRS.EOF                                            'Boucle sur tous les enregistrements
            If oRS.Fields("SELECTION") = -1 Then           'On teste la condition pour mise à jour
                oRS.Edit                                                  'On édite le champ de l'enregistrement
                oRS.Fields("SELECTION") = 0                    'Mise à jour du champ
                oRS.Update                                              'Validation de la mise à jour
            End If
            oRS.MoveNext                                              'On passe à l'enregistrement suivant
         Loop
    End If
    Set oRS = Nothing

  8. #8
    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
    bonsoir,
    Ce que je ne comprend pas, c'est que ça fonctionne mais ne prends jamais en compte la dernière ligne
    bizarre, je ne vois pas pourquoi ...
    As-tu mis l'instruction Me.Recalc à la fin ?
    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 ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    C'est bon, je viens de comprendre.
    Quand le champ est selectionné il n'est pas pris en compte.
    Du coup j'ai ajouté
    avant le code et ça fonctionne.

    Merci pour ton aide, elle m'a permis de pouvoir débuter.

  10. #10
    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
    Quand le champ est selectionné il n'est pas pris en compte.
    En effet, si un enregistrement est en cours de modification, il est verrouillé, c'est donc très bien de mettre Me.Recalc au début.
    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 ?

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

Discussions similaires

  1. [AC-2013] Débuter avec Access
    Par jsp22190 dans le forum Modélisation
    Réponses: 2
    Dernier message: 24/10/2019, 21h24
  2. [2012] Débuter avec SQL Server + Access
    Par popofpopof dans le forum Développement
    Réponses: 1
    Dernier message: 13/12/2017, 11h51
  3. Débuter avec applet java et base access
    Par abdelghani_k dans le forum Applets
    Réponses: 0
    Dernier message: 24/03/2012, 18h13
  4. Débuter une mission avec Access 97.
    Par HamidKatia dans le forum Access
    Réponses: 4
    Dernier message: 05/11/2007, 08h50
  5. Aide sur ouverture de fichier avec access
    Par FusionR dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/06/2004, 12h02

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