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 :

Remplacer la boite de dialogue "rechercher & remplacer par" de office par du code [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Octobre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Remplacer la boite de dialogue "rechercher & remplacer par" de office par du code
    Bonjour à tous,

    Avant de commencer, je voudrais vous dire que j'ai fais des recherches sur le forum, entre autres, avant de poster ici, mais que malheureusement elles se sont avérées infructueuses.

    Je suis actuellement en train de créer un formulaire (cf. ci-dessous) permettant de remplacer une valeur par une autre dans une table. Malheureusement, tout ne marche pas comme je l'aurais souhaité.

    Nom : 2.png
Affichages : 331
Taille : 181,0 Ko

    Quelques explications sur le formulaire (emplacement_mise_a_jour_de_la_base_de_données) :

    1) il y a deux listes de choix déroulantes : liste_anciens_emplacements & liste_nouveaux_emplacements

    2) il y a également un bouton de validation appelé bouton_validation

    3) Le but de ce formulaire est de remplacer, dans la table emplacement, la valeur contenu dans la liste déroulante liste_anciens_emplacements, par la valeur contenu dans la liste déroulante liste_nouveaux_emplacements, sans passer par la boite de dialogue "rechercher & remplacer par" d’office.

    Voici le code actuel de mon bouton bouton_validation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub bouton_validation_Click()
     
      If Me.liste_anciens_emplacements.Value <> "" And Me.liste_nouveaux_emplacements.Value <> "" Then
         DoCmd.Close acForm, "emplacement_mise_a_jour_de_la_base_de_données"
         DoCmd.OpenForm "Accueil"
      Else
     
      End If
     
    End Sub
    Quelques explications sur ce code :

    L3, L4 & L5 -> si les deux listes déroulantes on une valeur différente de "" (CàD qu'un choix a été fait dans la liste) alors on ferme le formulaire emplacement_mise_a_jour_de_la_base_de_données et on ouvre le formulaire accueil.
    L6 & L7 -> sinon impossible de valider (c'est normal ).

    l'idée serait de completer le code du bouton de cette façon (L5) :

    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 bouton_validation_Click()
     
      If Me.liste_anciens_emplacements.Value <> "" And Me.liste_nouveaux_emplacements.Value <> "" Then
     
         ' rechercher la valeur "Me.liste_anciens_emplacements.Value" dans la table emplacement (colonne emplacement_nom) puis remplacer tout par "Me.liste_nouveaux_emplacements.Value"
     
         DoCmd.Close acForm, "emplacement_mise_a_jour_de_la_base_de_données"
         DoCmd.OpenForm "Accueil"
      Else
     
      End If
     
    End Sub
    Malheureusement pour moi je ne suis ni développeur de métier, ni même programmateur amateur, du coup je ne sais pas qu'elle fonction (replace, autre ... ?) adopter pour faire en sorte que ma table emplacement soit mise à jour lorsque je valide (en gros, comment coder la ligne L5 ci-dessus) ...

    Alors ... un grand merci pour ceux (et celles bien sur) qui aurons des réponses à m'apporter

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 988
    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 : 11 988
    Points : 24 541
    Points
    24 541
    Par défaut
    Bonjour,

    Pour modifier des valeurs dans une table on utilise en priorité les requêtes Update, donc du SQL.
    Pour l'exécuter avec ACCESS il y a plusieurs méthode, la plus simple étant celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.RunSQL "UPDATE ...;"
    Pour créer ta requête update voici le lien :

    http://sqlpro.developpez.com/cours/sqlaz/dml/#LIV

    Il te faut en plus mélanger ça avec les références à ton IHM. Ce que tu cherches et par quoi tu le remplaces.

    Ce qui devrait donner un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE nom_table_cible SET colonne = """ &  Me.liste_nouveaux_emplacements.Value  & """ WHERE colonne=""" & Me.liste_anciens_emplacements.Value & """;"
    évidemment il faut adapter les noms pour que ça corresponde à ta table.

    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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Octobre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci Loufab, c'est parfait

    Pour info voici le code de mon bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub bouton_validation_Click()
     
      If Me.liste_anciens_emplacements.Value <> "" And Me.liste_nouveaux_emplacements.Value <> "" Then
         DoCmd.RunSQL "UPDATE emplacement SET emplacement_nom = """ &  Me.liste_nouveaux_emplacements.Value  & """ WHERE emplacement_nom = """ & Me.liste_anciens_emplacements.Value & """;"
         DoCmd.Close acForm, "emplacement_mise_a_jour_de_la_base_de_données"
         DoCmd.OpenForm "Accueil"
      Else
      End If
     
    End Sub
    J'ai aussi trouvé (pour ceux que ça intéresse, on sait jamais ...) un site sur lequel on trouve des cours et tutoriels sur le langage SQL.

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

Discussions similaires

  1. [Toutes versions] Comment appeler la boite de dialogue Rechercher/Remplacer
    Par mondev dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/09/2009, 00h21
  2. Réponses: 0
    Dernier message: 24/04/2008, 09h37
  3. Personnaliser la boite de dialogue Rechercher
    Par javelot69 dans le forum Access
    Réponses: 7
    Dernier message: 28/09/2006, 17h03

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