Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

RECHERCHER ET REMPLACER UN CARACTERE DANS 1 CHAMP D'UNE TABLE

3 réponses
Avatar
Emilie
Bonjour à tous,

Dans une table nommée Tbl j'ai 2 champs :
- Code (clé primaire)
- Designation

J'aimerais en cliquant sur un bouton vérifier que toutes les Designations ne
contiennent pas le caractère guillemet ".
Si c'est le cas il faut alors que je supprime ce caractère.

Quelqu'un sait-il comment réaliser ce petit programme en VBA ?

Par avance merci.

3 réponses

Avatar
bradabus
tu fais une requete sur la table en question en mettant dans la zone
critère sous le champ DESIGNATION la formule suivante comme "*"*"
comme ça tu auras toutes les entrées qui contiennent des guillemets
et à toi de les supprimer par la suite
Avatar
Gérard
Bonsoir,

Tu peux aussi utiliser essayer ces quelques lignes de code en les plaçant
derrière un bouton qui lancera le contrôle.

**************************************************************
Dim Sql As String
Dim Rs As Recordset
Dim DB As Database
Dim stVar, stInt, stInt2 As String
Dim i as Integer

Sql = "SELECT Tbl.Code, Tbl.Designation FROM Tbl;"

'création du jeu d'enregistrement
Set DB = Application.CurrentDb
Set Rs = DB.OpenRecordset(Sql, dbOpenDynaset)

'si des enregistrements sont présents, position sur le premier pour
départ
If Rs.EOF = False Then
Rs.MoveFirst
Else
'sinon sortie
MsgBox "Aucun enregistrement à modifier"
Exit Sub
End If

'tant que l'on n'est pas à la fin du jeu enregistrement
While Rs.EOF = False
'récupération de l'information valeur dans champ 'Désignation'
stVar = Rs.Fields(1).Value
'vérification et élimination du caractère " (code ascii 34) et le
'remplace par un espace sauf si premier caractère
'cette partie peut être remplacée par la fonction "replace" suivant
la version
'Access
'remise à blanc des variables
stInt = ""
stInt2 = ""
For i = 1 To Len(stVar)
stInt = Mid(stVar, i, 1)
If Asc(stInt) = 34 Then
If i = 1 Then
stInt = ""
Else
stInt = " "
End If
End If
stInt2 = stInt2 & stInt
Next i
'mise à jour de l'enregistrement
With Rs
.Edit
.Fields(1).Value = stInt2
.Update
'passage à l'élément suivant
.MoveNext
End With
Wend

'clôture
Rs.Close
DB.Close
Set Rs = Nothing
Set DB = Nothing

'avertissement utilisateur
MsgBox "Travaux terminés", vbInformation, "Correction"

'**************************************************************

Petit conseil, tu peux ajouter un champ oui/non ayant une valeur à défaut
sur non et que tu passes sur oui
lors de la mise à jour du champ désignation.
La requête devient :
Sql = "SELECT Tbl.Code, Tbl.Designation, Tbl.Maj FROM Tbl WHERE
((Tbl.Mal)úlse);"
Il faut ajouter lors de la mise à jour la ligne
.Fields(2).Value=True

Cela évitera au programme de parcourir à nouveau l'ensemble des
enregistrements mais seulement les éléments non contrôlés

A tester, sans garantie.

Gérard

"bradabus" a écrit dans le message de news:


tu fais une requete sur la table en question en mettant dans la zone
critère sous le champ DESIGNATION la formule suivante comme "*"*"
comme ça tu auras toutes les entrées qui contiennent des guillemets
et à toi de les supprimer par la suite
Avatar
3stone
Salut,

"Emilie"
| Dans une table nommée Tbl j'ai 2 champs :
| - Code (clé primaire)
| - Designation
|
| J'aimerais en cliquant sur un bouton vérifier que toutes les Designations ne
| contiennent pas le caractère guillemet ".
| Si c'est le cas il faut alors que je supprime ce caractère.


Dans une requête de mise à jour :

Replace([Designation];"""";"")


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/