Modifier valeur de champ
Modifier la valeur d'un champ dans toutes les tables
Cette routine permet de remplacer une valeur par une autre dans un champ donné de toutes les tables d'une base de données.
N'oubliez pas la référence DAO
Public Sub ReplaceFieldValue(CritereNomChamp As String, _
OldValue As String, NewValue As String)
On Error GoTo Err_ReplaceFieldValue
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
If tdf.Attributes <> dbSystemObject And _
tdf.Attributes <> dbHiddenObject Then
For Each fld In tdf.Fields
If fld.Name Like "*" & CritereNomChamp & "*" Then
Set rst = dbs.OpenRecordset(tdf.Name, dbOpenDynaset)
Do While Not rst.EOF
If rst.Fields(fld.Name).Value = OldValue Then
If MsgBox("Voulez-vous modifier la valeur " & _
OldValue & vbCrLf & " par la valeur " & NewValue & _
vbCrLf & " dans le champ " & fld.Name & _
vbCrLf & " de la table " & tdf.Name & " ?", vbQuestion + vbYesNo, _
"Confirmation") = vbYes Then
Debug.Print tdf.Name & " " & fld.Name & " " & rst.Fields(fld.Name).Value & " modifié"
rst.Edit
rst.Fields(fld.Name).Value = NewValue
rst.Update
End If
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End If
Next fld
End If
Next tdf
dbs.Close
Set fld = Nothing
Set tdf = Nothing
Set dbs = Nothing
Exit Sub
Err_ReplaceFieldValue:
Select Case Err.Number
Case 3200
Debug.Print "Clé Primaire non modifiable " & _
"(enregistrements connexes)" & _
vbCrLf & tdf.Name & " - " & fld.Name & _
" - " & rst.Fields(fld.Name).Value
Resume Next
Case 3022
Debug.Print "Champ indexé sans doublon : " & _
"La Nouvelle valeur existe déjà dans la table :" & _
vbCrLf & tdf.Name & " - " & fld.Name & _
" - " & rst.Fields(fld.Name).Value
Resume Next
Case 3201
Debug.Print "Clé Externe non modifiable " & _
"(Valeur Clé Primaire inexistante)" & _
vbCrLf & tdf.Name & " - " & fld.Name & _
" - " & rst.Fields(fld.Name).Value
Resume Next
Case 3164
Debug.Print "Numéro Auto Non modifiable avec cette méthode" & _
vbCrLf & tdf.Name & " - " & fld.Name & _
" - " & rst.Fields(fld.Name).Value
Resume Next
Case Else
Debug.Print "Modification dans table " & tdf.Name & " demandée."
Resume Next
End Select
End Sub
Dernière modification : 08/02/2010 01:25
Catégorie : - Tables
Page lue 9559 fois