Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 28/07/2011, 13h16   #1
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 8
Points : 3
Points : 3
Par défaut comparaison de 2 champs

bonjour tout le monde
je travaille sous vba access , je ne suis pas experte en vba et je voulais savoir comment comparer deux champs de la même table. Merci
saritta93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 14h33   #2
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 8
Points : 3
Points : 3
Par défaut plus de précision

Re, cette comparaison que j'effectue est une condition pour insérer des lignes, où j'ajoute à mon premier champ jusqu'à atteindre mon deuxième, bon je vous donne mon programme actuel en attente de vos suggestions. merci beaucoup d'avance :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub insertion()
 
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim i, j As Integer
Set db = CurrentDb
Set rst = db.OpenRecordset("client")
rst.MoveFirst
Do Until rst.EOF
j = 0
     Do Until client.champ1(j) = client.champ2(rst.CursorLocation) ' c ici le problème'
    DoCmd.RunSQL " insert into clientfinal ( champ1,champ2,champ3)SELECT [champ1]+7 AS Expr1, client.Champ2, client.Champ3 FROM client WHERE (([champ1]+7<=[client].[champ2]))"
       j = j + 1
      Loop
Loop
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
saritta93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 16h57   #3
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Je n'ai pas compris grand chose à ce que vous attendiez de ce code, mais il ya déjà les pb suivants :

1 - vous ouvrez un recorset mais ne l'utilisez pas ! A priori je pense qu'il y a erreur par exemple sur :

Code :
Do Until client.champ1(j) =
qui devrait être :

Code :
Do Until rst.champ1(j) =
2 - votre première boucle tourne indéfiniment car il manque :

entre les deux "loop"

pour le reste il me faudrait mieux appréhender vos attentes ...

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 22h33   #4
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 8
Points : 3
Points : 3
salut , Merci bien pour ta réponse : je vais essayé de t'expliquer ce que je veux , bon j'ouvre une table et pour chaque ligne je crée de nouvelles lignes en ajoutant à chaque fois 7 au champ1 jusqu'à atteindre la valeur du deuxième champ, j’espère avoir été claire et merciiii
saritta93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 15h36   #5
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 8
Points : 3
Points : 3
Re, je découvre que vba c'est très différent du simple vb, mais j'ai encore un peu ajusté dans mon code car je m'étais pas beaucoup intéressée au détails , je crois qu'il fallait stocker les données de ma table dans une chaine dites moi si je suis dans le bon chemin ???

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Sub insertion()
 
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim i, j As Integer
   Dim strSQL As String
    Dim sara As Variant
 
Set db = CurrentDb
Set rst = db.OpenRecordset("client")
strSQL = "SELECT * FROM client"
sara = rst.GetRows()
      For i = 0 To UBound(sara, 2)
           Debug.Print " " & _
            sara(0, i) & " " & _
            sara(1, i)
 
 
rst.MoveFirst
Do Until rst.EOF
j = 0
 Do Until sara(0, j) >= sara(1, i)
    DoCmd.RunSQL " insert into clientfinal ( champ1,champ2,champ3)SELECT client.[champ1]+7 AS Expr1,client.Champ2, client.Champ3 FROM client WHERE (([champ1]+7<=[client].[champ2]))"
       j = j + 1
       rst.MoveNext
      Loop
      rst.MoveNext
Loop
 
       Next i
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
saritta93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 16h52   #6
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 75
Points : 27
Points : 27
Personnellement, je travaille en utilisant le modèle ADO plutot que DAO, donc je ne peux pas dire grand chose sur les syntaxes des commandes. Néanmoins, je remarque que tu ne te sers pas de la variable strSQL après lui avoir indiqué sa valeur... Es-tu donc sûr d'avoir correctement ouvert ton recordset ?

De plus, si j'ai bien compris, tu veux rajouter des lignes à ton recordset, puis mettre à jour la table access qui y est référencée ? Dans ce cas, n'y a t-il pas en DAO une instruction rst.Add ou rst.AddItem pour rajouter une ligne, et un rst.Update pour mettre à jour ton recordset une fois les changements effectués? (je ne suis pas sur des commandes, à toi de chercher dans les faq)
candrau est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/08/2011, 11h11   #7
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Si j'ai bien compris votre demande, essayez le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dim db As DAO.Database
Dim rst, rst2 As DAO.Recordset
Dim i, j As Integer
 
 
Set db = CurrentDb
Set rst = db.OpenRecordset("client")
Set rst2 = db.OpenRecordset("clientfinal")
 
rst.MoveFirst
 
Do Until rst.EOF
 
        i = Fix((rst!champ2.Value - rst!champ1.Value) / 7)
        MsgBox i
        For j = 1 To i
 
        rst2.AddNew
        rst2!champ1 = rst!champ1 + (7 * j)
        rst2!champ2 = rst!champ2
        rst2!champ3 = rst!champ3
        rst2.Update
        rst2.MoveLast
 
        Next j
 
rst.MoveNext
 
Loop
 
Set rst = Nothing
Set db = Nothing
qui ajoute des lignes dans la table Clientfinal sur la base des données de votre table Client ...

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 13h12   #8
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 8
Points : 3
Points : 3
bonjour, j'avais compris qu'il fallait utiliser "addnew" et "update " mais j'avais une erreur d'indexation que ta méthode intelligente a résolu c'est parfait merci beaucoup
saritta93 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 13h54.


 
 
 
 
Partenaires

Hébergement Web