Recherche
Recherche
Les mémos
Je débute...
Visites

 1002234 visiteurs

 1 visiteur en ligne

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

Catégorie : Les mémos - Tables
Page lue 7387 fois