je suis actuellement en train de développer une application et j'aurai besoin d'aide concernant la modification de donnée présente dans une table access depuis un module vba.
Le but est de modifier des adresses par exemple :
2 ET app 14 Les Pyrenees (ceci est contenu dans un seul champ)
Je pense que tu devrais tout simplement te faire un bouton qui te lance une requete UPDATE avec les 3 champs renseignés. Détailles nous un peu plus ton projet.
Mon projet est telle que a partir d'une adresse donnée je doit retrouve un code invariant liée à un local, ce local a une adresse avec avec une mise en forme strict comme je l'ai montrer sur le premier post de ce faite je doit mettre en forme les adresses présente dans la base de donnée.
je ne peut pas rajouter de bouton car je n'ai pas de formulare liée à cette table le traitement sera réaliser automatiquement par l'application mise en place. Pour le moment je souhaiterai seulement réussir à mettre en forme les adresses.
Ce que j'ai fait c'est d'acceder à base de donnée par la fonction suivante:
Private Sub OuvertureBase()
Dim Res As DAO.Recordset
Dim DbsArt As DAO.Database
Dim SQL As String
Dim requete As String
Dim Taille As String
SQL "SELECT CPL_RUE_DOMICILE FROM Election WHERE PATRONYME 'GABINAUD'"
Set Res = CurrentDb.OpenRecordset(SQL)
Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement
requete = Res.Fields(0).Value 'récupération de la valeur de l'enregistrement
MsgBox requete
End Sub
Ensuite il faut mettre en forme se que l'on recupere d'en requete.
Dans ce cas la tu peux simplement faire une fonction qui parcourt toute ta base et dans cette boucle tu mets un Replace dans lequel tu transformes ta chaine "et" par "etage" (test ta chaine avant).
_______________________
<<<< :-: 4L!@$ :-: >>>>
Vous n’avez pas trouvé la réponse que vous recherchez ?
en effet c'est une solution que j'ai envisagée seulement j'ai une multitude de facon de definir un etage par exemple : ETG, etg, ETGE
requete1 = UCase(requete)
Donc j'ai pencer avant de faire le replace de mettre toute la chaine en majuscule se qui m'enleve le probleme concernant les majuscule en suite je fait la fonction suivante :
SQL1 "UPDATE Election SET " Election.CPL_RUE_DOMICILE Replace(CPL_RUE_DOMICILE,requete1,requete1) WHERE CPL_RUE_DOMICILE Like requete"
DoCmd.RunSQL SQL1
Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement
MsgBox Res.Fields(0).Value
Le probleme est qu'il y a probablement une erreur au niveau de la requete
ya une double cote en trop non ?
SQL1 "UPDATE Election SET " Election.CPL_RUE_DOMICILE Replace(CPL_RUE_DOMICILE,requete1,requete) WHERE CPL_RUE_DOMICILE Like
requete"
Dim Res As DAO.Recordset
Dim DbsArt As DAO.Database
Dim SQL As String
Dim SQL1 As String
Dim requete As String
Dim requete1 As String
Dim Taille As String
SQL "SELECT CPL_RUE_DOMICILE FROM Election WHERE PATRONYME 'GABINAUD'"
Set Res = CurrentDb.OpenRecordset(SQL)
Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement
requete = Res.Fields(0).Value 'récupération de la valeur de l'enregistrement
requete1 = UCase(requete)
MsgBox requete1
SQL1 "UPDATE Election SET Election.CPL_RUE_DOMICILE Replace(CPL_RUE_DOMICILE,requete1,requete) WHERE CPL_RUE_DOMICILE Like requete"
DoCmd.RunSQL SQL1
Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement
MsgBox Res.Fields(0).Value
End Sub
Requete me renvoie bien la chaine que je veut.
Requete1 me renvoie bien la Requete mais mis en majuscule
Je doit toujours entrer des valeur de parametre pour les variable requete et requete 1, si je ne fixe pas le valeur le programme va remplacer par des espce vide les champs sélectionnée dans la premiere requete sql.
S'affiche alors un message d'erreur concernant :
MsgBox Res.Fields(0).Value