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 25/07/2011, 16h51   #1
Invité de passage
 
Inscription : juin 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 5
Points : 0
Points : 0
Par défaut Modification d'un enregistrement selon la valeur d'un champ

Bonjour,

Le code est le 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
Option Compare Database
 
Private Sub btValider2_Click()
Set FrmRptTbl = CurrentDb.OpenRecordset("FrmRptTbl", DB_OPEN_TABLE)
stocker = Forms!FrmRpt.Controls("frmCodeTxt").Value
 
 
While Not FrmRptTbl.EOF
If FrmRptTbl("Code") = stocker Then
 
FrmRptTbl.Edit
FrmRptTbl("NomDoss") = Forms!FrmRpt.Controls("FrmNomDoss").Value
FrmRptTbl("FichPec") = Forms!FrmRpt.Controls("FrmFichPec").Value
FrmRptTbl("Descri") = Forms!FrmRpt.Controls("FrmDescri").Value
FrmRptTbl("Emplac") = Forms!FrmRpt.Controls("FrmEmplac").Value
FrmRptTbl("Add") = Forms!FrmRpt.Controls("FrmAdd").Value
FrmRptTbl("Aps") = Forms!FrmRpt.Controls("FrmAps").Value
FrmRptTbl("Dce") = Forms!FrmRpt.Controls("FrmDce").Value
FrmRptTbl("DpeGc") = Forms!FrmRpt.Controls("FrmDpeGc").Value
FrmRptTbl("DpeEq") = Forms!FrmRpt.Controls("FrmDpeEq").Value
FrmRptTbl("DpeElec") = Forms!FrmRpt.Controls("FrmDpeElec").Value
FrmRptTbl("Pc") = Forms!FrmRpt.Controls("FrmPc").Value
FrmRptTbl("Rc") = Forms!FrmRpt.Controls("FrmRc").Value
FrmRptTbl("Ae") = Forms!FrmRpt.Controls("FrmAe").Value
FrmRptTbl("Ccap") = Forms!FrmRpt.Controls("FrmCcap").Value
FrmRptTbl("CahGs") = Forms!FrmRpt.Controls("FrmCahGs").Value
FrmRptTbl("DossRm") = Forms!FrmRpt.Controls("FrmDossRm").Value
FrmRptTbl("Securi") = Forms!FrmRpt.Controls("FrmSecuri").Value
FrmRptTbl("Ct") = Forms!FrmRpt.Controls("FrmCt").Value
FrmRptTbl("CrChan") = Forms!FrmRpt.Controls("FrmCrChan").Value
FrmRptTbl("ConstHuiss") = Forms!FrmRpt.Controls("FrmConstHuiss").Value
FrmRptTbl("DossPhot") = Forms!FrmRpt.Controls("FrmDossPhot").Value
FrmRptTbl("PvContr") = Forms!FrmRpt.Controls("FrmPvContr").Value
FrmRptTbl("PvEss") = Forms!FrmRpt.Controls("FrmPvEss").Value
FrmRptTbl("DprGc") = Forms!FrmRpt.Controls("FrmDprEq").Value
FrmRptTbl("DprEq") = Forms!FrmRpt.Controls("FrmDprEq").Value
FrmRptTbl("DprElec") = Forms!FrmRpt.Controls("FrmDprElec").Value
FrmRptTbl("DossEco") = Forms!FrmRpt.Controls("FrmDossEco").Value
FrmRptTbl("Courr") = Forms!FrmRpt.Controls("FrmCourr").Value
FrmRptTbl("DocRecep") = Forms!FrmRpt.Controls("FrmDocRecep").Value
FrmRptTbl("Doe") = Forms!FrmRpt.Controls("FrmDoe").Value
FrmRptTbl("FichProd") = Forms!FrmRpt.Controls("FrmFichProd").Value
FrmRptTbl("Dprec") = Forms!FrmRpt.Controls("FrmDprec").Value
FrmRptTbl("DprecGc") = Forms!FrmRpt.Controls("FrmDprecGc").Value
FrmRptTbl("DprecElec") = Forms!FrmRpt.Controls("FrmDprecElec").Value
FrmRptTbl("DprecEq") = Forms!FrmRpt.Controls("FrmDprecEq").Value
FrmRptTbl("Pid") = Forms!FrmRpt.Controls("FrmPid").Value
FrmRptTbl("Af") = Forms!FrmRpt.Controls("FrmAf").Value
FrmRptTbl("Si") = Forms!FrmRpt.Controls("FrmSi").Value
FrmRptTbl("Geo") = Forms!FrmRpt.Controls("FrmGeo").Value
FrmRptTbl("Cctp") = Forms!FrmRpt.Controls("FrmCctp").Value
FrmRptTbl.Update
FrmRptTbl.MoveLast
Else
FrmRptTbl.MoveNext
End If
Wend
FrmRptTbl.Close
DoCmd.Close acForm, "FrmRpt", acSaveNo
 
Exit Sub
End Sub
Je m'explique: je souhaiterais modifier l'enregistrement dont le code est la variable stocker.
Pour celà, j'ai fait un balayage du recordset et quand il trouve la bonne valeur, il édite l'enregistrement.
Le problème est que ça ne marche pas pour le dernier enregistrement (dans le sens le dernier que j'ai enregistré). à chaque fois access plante et je suis obligé de faire ctrl + alt +suppr . J'ai essayé différents types de boucles comme while not eof, loop until eof , ..mais le problème n'est pas résolu.

Quelqu'un verrait t'il ce qui coince dans mon code?
Merci d'avance
jeankliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h24   #2
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 47
Points : 46
Points : 46
Je répond peut-être à coté mais mais si le dernier enregistrement remplit la condition :

Code :
FrmRptTbl("Code") = stocker
Alors le code suivant vas être exécuté :

Comme le contrôle "code" de cet enregistrement n'as pas changé il va de nouveau satisfaire la condition de la boucle et ainsi de suite => boucle infini.

Si j'ai bien compris ce que tu voulait faire il vaut mieux sortir de la boucle avec ceci :

De plus j'avoue ne pas comprendre la ligne 62 et 63 ...
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h38   #3
Invité de passage
 
Inscription : juin 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 5
Points : 0
Points : 0
merci ça marche
jeankliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h44   #4
Invité de passage
 
Inscription : juin 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 5
Points : 0
Points : 0
hum par hasard, tu saurais pas comment on fais pour
dans une zone de liste modifiable dont les valeurs proviennent d'une table,
afficher une seule fois chaque valeur dans la liste (le champ en question n'est pas la clé et comporte des doublons)?
Merci.
jeankliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h57   #5
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 47
Points : 46
Points : 46
Cool :-)

J'aurais testé ça perso (dans le paramètre "Row Source" (en VO) de ton champ ou de ton contrôle) :
Code :
SELECT DISTINCT TaTable.TonChamp FROM TaTable;
Mais jamais essayé.
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h08.


 
 
 
 
Partenaires

Hébergement Web