Les mémos

Fermer Tables

Fermer Requêtes

Fermer Formulaires

Fermer Etats

Fermer Modules

Fermer Base

Fermer Automation

Fermer Administration

Fermer Registre

Fermer String

Fermer Email CDO

Fermer Outlook

Fermer Net

Fermer Dates - Heures

Fermer Fichiers

Fermer Références

Fermer Vrac

Je débute...

Fermer La normalisation

Fermer VBA

Attention
Aucun support
par émail !

Utilisez le forum pour les questions/réponses concernant MsAccess et les codes que vous trouverez sur ce site.
Visites

   visiteurs

   visiteurs en ligne

Tables - 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

 


Date de création : 27/10/2005 : 20:00
Dernière modification : 08/02/2010 : 01:25
Catégorie : Tables
Page lue 6922 fois


Imprimer l'article Imprimer l'article

Recherche



Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
Captcha
Recopier le code :
Au sujet de l'auteur
L'auteur qui fréquente (fréquentait) le forum microsoft.public.fr.access a eu le plaisir d'être nommé MVP Office-Access de janvier 2003 à décembre 2011.

Qui sont les MVP ?

Divers ;-)
Nous contacter

Haut