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 16/03/2011, 18h51   #1
Nouveau Membre du Club
 
Quimby Maire
Inscription : décembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Quimby Maire

Informations forums :
Inscription : décembre 2009
Messages : 58
Points : 32
Points : 32
Par défaut Case a cocher sous condition

Bonjour,

j'aimerais ajouter un bouton dans un formulaire qui coche une case a coché dans une table si et seulement si elle n'est pas déja coché.

Je sais comment les cocher dans l'ensemble, mais pas avec un si.


Code :
CurrentDb.Execute "UPDATE tblAgence SET envoyer = True;"
Merci!!
Mairequimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 03h15   #2
Nouveau Membre du Club
 
Quimby Maire
Inscription : décembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Quimby Maire

Informations forums :
Inscription : décembre 2009
Messages : 58
Points : 32
Points : 32
Par défaut suite

Je cherche toujours, j'ai essayer plein de truc, mais rien ne fonctionne vraiment....

Je bloque vraiment.

quelqu'un a-il une solution simple a me proposer.

Merci beaucoup de l'aide.
Mairequimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 15h17   #3
Nouveau Membre du Club
 
Homme Romain
Étudiant
Inscription : novembre 2009
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Romain
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 81
Points : 29
Points : 29
Bonjour,
Sur ton clic tu regarde si ta case est à true, si elle n'est pas a true, tu la coche? C'est ça en gros?

Code :
1
2
3
4
5
6
7
8
9
Private Sub Bouton_Click()
 
If CaseCoché Then
...
Else
CurrentDb.Execute "UPDATE tblAgence SET envoyer = True;"
End If
 
End Sub
Un truc comme ça? J'ai repris ton code pour cocher la case
RoZyk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h16   #4
Nouveau Membre du Club
 
Quimby Maire
Inscription : décembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Quimby Maire

Informations forums :
Inscription : décembre 2009
Messages : 58
Points : 32
Points : 32
Par défaut objet requis

oui je comprend bien,

mais comment je fais pour vérifier si le champs est coché dans la table.

Code :
1
2
3
4
5
6
if tblAgence.envoyer=true then
 
Else
CurrentDb.Execute "UPDATE tblAgence SET envoyer = True;"
End If
 End Sub
Mais cette méthode ne fonctionne pas, il me manque un objet "objet requis"


merci de m'aider
Mairequimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h22   #5
Nouveau Membre du Club
 
Quimby Maire
Inscription : décembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Quimby Maire

Informations forums :
Inscription : décembre 2009
Messages : 58
Points : 32
Points : 32
Par défaut suite

de plus, la ligne
Code :
CurrentDb.Execute "UPDATE tblAgence SET envoyer = True;"
selectionne tous les champs et les coches, donc si c'est un champs de date et que je veux mettre la date du jour comme

Code :
CurrentDb.Execute "UPDATE tblAgence SET Date_envoyer = Now();"
même si je fait un IF, tous les champs seront mis à la date du jour en raison de la ligne.

donc comment faire pour ajouter la date du jour dans la table si le champs date_envoyer est vide et répéter la procédure pour l'ensemble des lignes (enregistrement) de la table.

Merci!!!
Mairequimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 04h25   #6
Nouveau Membre du Club
 
Quimby Maire
Inscription : décembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Quimby Maire

Informations forums :
Inscription : décembre 2009
Messages : 58
Points : 32
Points : 32
Par défaut Développement

Bon j'ai un début de réponse.

J'ai réussi a faire le gros du travail, mais j'ai 2 problème.

1-le format de date change complètement dans ma table, j'ai mis le format sous date, mais le code VBA ne le traite pas comme ça. Si je change le format date pour numérique dans ma table, tout est OK. (Si je ne le change pas, ma date de 2011-01-24 devient 1905-03-05

2-le code ajoute des lignes dans ma table, il ne remplace pas seulement les infos manquante. Donc, si il manque un champs dans la table, le code ne fonctionne pas

voici mon code

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
Private Sub Commande13_Click()
 
Dim db As DAO.Database
Dim myrst As DAO.Recordset
 
Set db = CurrentDb
 
sSQL = "SELECT tblAgence1.Datedemande, tblAgence1.ID_recherche1, tblAgence1.Matricule, tblAgence1.envoyer, tblAgence1.Date_Envoie FROM tblAgence1 ORDER BY tblAgence1.Datedemande, tblAgence1.ID_recherche1;"
 
Set myrst = db.OpenRecordset(sSQL)
 
    If Not myrst.EOF Then
    Do While Not myrst.EOF
 
'sur la ligne suivante, le format de date n'est pas valide
    Datedem = myrst.Fields("Datedemande").Value
 
    IDrech = myrst.Fields("ID_recherche1").Value
    Matri = myrst.Fields("Matricule").Value
    envoi = True
    dateEnv = "Now()"
'ici, si un champs est vide dans la table, le code plante sur la ligne suivante
sSQLInsert = "INSERT INTO tblAgence1 ([Datedemande], [ID_recherche1], [Matricule], [envoyer], [Date_Envoie]) VALUES (" & Datedem & "," & IDrech & "," & Matri & ",true," & dateEnv & ")"
 
db.Execute sSQLInsert, dbFailOnError
 
myrst.MoveNext
 
    Loop
 
    End If
 
myrst.Close
 
Set myrst = Nothing
db.Close
 
End Sub
Merci à ceux qui jette un coup d'oeil sur ce défi.


bonne journée

Mairequimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 05h18   #7
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

1/ Vous utilisez l'instruction SQL d'ajout (INSERT) . Il faut utiliser celle de mise à jour (UPDATE) comme vous l'utilisiez au début.

2/ Puisque vous utilisez un recordset, pourquoi ne pas faire les modifications avec les méthodes recordset (rst.Edit, rst.Addnew...)

3/ pour ne changer qu'un des enregistrements, soit créer le recordset qu'avec cet enregistrement, soit atteindre le bon enregistrement avec le méthode "FindFirst" du recordset.

3/ pour les champs vide, utilisez la fonction "Nz" qui permet de changer une valeur si celle ci est vide (voir l'aide)

4/ pour les formats de dates, j'ai renoncé à travailler avec. Je ne les utilise que pour l'affichage. Mais les dates sont stockées sous forme numérique (réel double)

Bonne journée

Pierre
pier.antoine 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 19h14.


 
 
 
 
Partenaires

Hébergement Web