OVH Cloud OVH Cloud

le programme svp

8 réponses
Avatar
Papilou
Bonjour,
N'ayant pas résolu mon problème avec des requêtes, je me tourne vers la
programmation VBA.

J'ai trouvé des centaines d'exemples et de façon de faire, très pointu sur
internet. Mais je ne sais pas lancer un seul de ce petits programmes.

Dans un premier temps, je voudrais faire ceci :
Faire un formulaire avec un bouton qui lorsque je clique, lance un module
qui liste le contenu d'une de mes tables.
Il est clair que je ne cherche pas a faire une requête select lancée par un
bouton du formulaire (ça je sais le faire). Bien comprendre que je cherche à
apprendre les rudiment nécessaire pour faire un programme VBA.

Une autre façon de dire ce que je cherche serait :
comment en VBA faire l'équivalent de
SELECT champ1, champ2 FROM table WHERE x=Y
merci

8 réponses

Avatar
FreeAccess
Bonjour,

Pas très clair ton explication. Si j'ai bien compris tu veux seulement
afficher sur un Form le contenue d'une de tes tables avec un critère
du genre champ x doit contenir Y !!!
Et bien en VBA c'est la même chose, si tu ne connais pas le code
exact, fait d'abord une requête, clic droit 'Mode SQL' et récupère
le code.
Ensuite sur la propriétés "Sur clic" qui doit afficher tes données :

Dim sSQL as STRING
sSQL = "SELECT...........(ici tu recopie le code issue de ta
requête)..."

Pour plus de précision 'Touche F1' sur le mot RunSQL.
Bonne continuation
Avatar
Papilou
Pas très clair ton explication.
Mes excuses je vais essayé de faire plus clair


Si j'ai bien compris tu veux seulement
afficher sur un Form le contenue d'une de tes tables avec un critère
du genre champ x doit contenir Y !!!
Je veux, faire en VBA le même style d'affichage qui se fait quant je lance

une requête.
Je sais faire un formulair, lancer une requête, ecrire une requête en SQL ou
QBE.... Pas de problème pour moi. Mais j'ai un problème que je ne peux pas
résoudre avec une requête. Donc il faut passer par du VBA ou autre chose.
Mais de la programmation.

Et bien en VBA c'est la même chose, si tu ne connais pas le code
exact, fait d'abord une requête, clic droit 'Mode SQL' et récupère
le code.


Oui je sais cela, mais ce n'est pas une requête que je veux faire. mais un
petit programme qui affiche le contenue d'une table par exemple, et pour
commencer. Dans un autre temps, quand je saurais faire cela, je ferai un
programme plus complexe. Mais je veux juste essayer.

Merci de ton aide.

Avatar
FreeAccess
Ok,

Oui je sais cela, mais ce n'est pas une requête que je veux faire. mais un
petit programme qui affiche le contenue d'une table par exemple, et pour
commencer. Dans un autre temps, quand je saurais faire cela, je ferai un
programme plus complexe. Mais je veux juste essayer.


L'exemple de la requête était juste la façon de montrer comment
récupérer le code SQL ;-))


Mais j'ai un problème que je ne peux pas résoudre avec une requête. Donc il faut passer par du VBA ou autre chose.
Mais de la programmation.


Généralement, sauf cas particulier, on gére pratiquement tout avec
une requête, éventuellement avec des requêtes imbriquées.

mais un petit programme qui affiche le contenue d'une table par exemple


Donc pour ça pas de secret, touche F1 et regarde 'RunSQL' - 'Création
table en VBA' - etc .......ou consulte l'excellent site
http://access.developpez.com/faq/?page=TATablesAndFields#CreerFormTbl.

Ici tu trouveras une tonne d'information pour faire ce que tu
veux......et même poser des questions.

Bonne continuation

Avatar
Bonjour

Oui je sais cela, mais ce n'est pas une requête que je veux faire. mais un petit programme qui affiche le contenue d'une table par
exemple, et pour commencer. Dans un autre temps, quand je saurais faire cela, je ferai un programme plus complexe. Mais je veux
juste essayer.


on n'affiche pas une requête en vba, mais on peut parcourir le contenu d'une table ou d'une requête

Quoi qu'il en soit, il faut savoir que les données dans une table access n'ont pas forcément le même ordre "interne" que celui
"affiché"
et qu'il te faudra une clé primaire avec numéro auto incrémentiel pour savoir quelle donnée a été saisie avant l'autre....

sinon, pour parcourir ta table, ta requete ou ta syntaxe sql, une façon de faire pourrait être la suivante :

Public Sub parcourirdonnees()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = Application.CurrentDb
Set rst = dbs.OpenRecordset("Select * from TaTable;")
rst.MoveLast
rst.MoveFirst
Do While Not rst.EOF
MsgBox rst("champ1") & " - " & rst("Champ2")
rst.MoveNext
Loop
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub

+a
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

Avatar
Papilou
Je progresse, je progresse
Merci anor
PS: Pour toutes les remarques sur la table je suis daccord, mais c'est
ainsi, elle est comme cela on ne peut la changer. Il faut que je trouve le
moyen de l'exploiter comme elle est. Par contre, et c'est ca mon objectif,
je peut a partir de ma table initiale en construire une autre.
En attendant, ce programme fonctionneparfaitement.
Mais ne peut-on pas afficher les résultat autrement que dans une MsgBox?????
C'est chiant d'appuyere 50 fois sur OK....

Private Sub Commande0_Click()
On Error GoTo Err_Commande0_Click
MsgBox "hello"
Dim db As Database
Dim reponse As Recordset
Dim sql As String

Set db = CurrentDb()
sql = "SELECT champ1, champ2, champ3, champ4 FROM table1 WHERE
champ1“0000;"

Set reponse = db.OpenRecordset(sql, dbOpenDynaset)

While Not reponse.EOF
MsgBox reponse.Fields("champ1") & " " & reponse.Fields("champ2") & " " &
reponse.Fields("champ3") & " " & reponse.Fields("champ4")
reponse.MoveNext
Wend
reponse.Close: Set reponse = Nothing
db.Close: Set db = Nothing


DoCmd.GoToRecord , , acLast

Exit_Commande0_Click:
Exit Sub

Err_Commande0_Click:
MsgBox Err.Description
Resume Exit_Commande0_Click

End Sub
Avatar
re

"Papilou" a écrit dans le message de news: 447043ea$0$9978$

je peut a partir de ma table initiale en construire une autre.
En attendant, ce programme fonctionneparfaitement.
Mais ne peut-on pas afficher les résultat autrement que dans une MsgBox?????
C'est chiant d'appuyere 50 fois sur OK....


ben justement, c'est à cet endroit, à la place des msgbox, que tu vas incorporer ton programme qui va faire je ne sais quoi
en fonction des valeurs de champs du recordset qu'il est en train de parcourir ...

--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

Avatar
Papilou
Oui,oui c'est cela
je m'y emploi, maintenant je sais faire.

c'est juste le msgbox qui me gene, mais ce n'est pas important, si on a pas
autre chose je m'en contenterai.
merci pour tout, ca marche maintenant
NB:
merci aussi pour les requêtes avec dcount et union, mais ca prend trop de
temps machine c'est pour cela que je fait cette solution.

<Anor> a écrit dans le message de news:

re

"Papilou" a écrit dans le message de news:
447043ea$0$9978$

je peut a partir de ma table initiale en construire une autre.
En attendant, ce programme fonctionneparfaitement.
Mais ne peut-on pas afficher les résultat autrement que dans une
MsgBox?????
C'est chiant d'appuyere 50 fois sur OK....


ben justement, c'est à cet endroit, à la place des msgbox, que tu vas
incorporer ton programme qui va faire je ne sais quoi
en fonction des valeurs de champs du recordset qu'il est en train de
parcourir ...

--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------





Avatar
re

"Papilou" a écrit dans le message de news: 447061ca$0$9996$

c'est juste le msgbox qui me gene, mais ce n'est pas important, si on a pas autre chose je m'en contenterai.


ben le msgbox c'était juste pour l'exemple et te montrer comment extraire le contenu d'un champ spécifique...
donc à toi de remplacer le msgbox par ce que tu veux ...???!!!!


a+
arnaud