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 : Les mémos - Tables
Page lue 9086 fois