Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 16h53   #1
Invité de passage
 
Thomas
Inscription : janvier 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Thomas
Âge : 28

Informations forums :
Inscription : janvier 2011
Messages : 10
Points : 4
Points : 4
Par défaut Mettre à jour une table access en VBA

Bonjour à tous,

Dans une table, je possède les enregistrements d'une population donnée. Chaque personne est identifiée par un numéro unique. A intervalle régulier, cette population est mise à jour, identifiée par une date donnée.

Lors du premier enregistrement, tous les champs de la table sont renseignés.
Lors de chaque mise à jour, seuls certains champs sont renseignés.

Une personne apparait donc autant de fois que de mises à jour.

Je souhaiterais pouvoir complèter chaque champ vide de la mise à jour par les champs renseignés du tout premier enregistrement. Si possible sans requête.

Ex:

Table avant traitement :

Identifiant------Nom---------Date-------------Salaire
1.....................Joe.........01/01/2011.............(Vide)
1.....................Joe.........01/12/2010.............40000

Table après traitement

Identifiant------Nom---------Date-------------Salaire
1.....................Joe..........01/01/2011.............40000
1.....................Joe..........01/12/2010.............40000

Dans cet exemple, je souhaite remplacer le champ vide du salaire par le salaire (a priori inchangé) de notre ami Joe.

Je voudrais automatiser cette méthode pour chaque emplacement vide de ma table, j'ai pensé à utiliser la méthode .EDIT mais je ne vois pas comment m'en sortir proprement.

Je vous remercie d'avance pour votre aide.

Thomas
Smoovy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 13h58   #2
Invité de passage
 
Thomas
Inscription : janvier 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Thomas
Âge : 28

Informations forums :
Inscription : janvier 2011
Messages : 10
Points : 4
Points : 4
Bonjour,

La nuit porte conseil et j'ai pondu ce bout de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim db As Database
Set db = CurrentDb
 
Dim mirs As Recordset
Set mirs = db.OpenRecordset("MaPopulation")
 
Dim MaVariableTampon As String
Dim i As Integer
 
mirs.Index = "MonIdentifiant"
For i = 1 To mirs.RecordCount
    If i = 1 Then mirs.MoveFirst Else mirs.MoveNext
        If IsNull(mirs![MaVariable]) = True Or mirs![MaVariable] = "" Then
            mirs.MovePrevious
            MaVariableTampon = mirs![MaVariable]
            mirs.MoveNext
            mirs.Edit
            mirs![MaVariable] = MaVariableTampon
            mirs.Update
Next i
 
End Sub
En prérequis, on doit savoir quel champ va être vide (ici MaVariable peut l'être) et on remplit le vide par l'enregistrement de la ligne précédente à l'aide d'une variable tampon. Tout repose sur le tri croissant de la date...

Si qqn a une meilleure idée je suis preneur!

@+
Smoovy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web