Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Probleme vba access

pil'af, le mercredi 10 octobre 2007 à 09:12:30
Bonjour,
j'ai un problème concernant access... je souhaite extraire des donnée à partir d'une form mais je ne comprend pas vraiment comment elle est complétée ( en effet ce n'est pas moi qui est creer les base de données ni le corps du programme). il semblerait que ce soit cette instruction le problème :

Private Sub RéfPièces_AfterUpdate()
On Error Resume Next
Me!Texte53 = Me!RéfPièces.Column(1)
Me!Indice = Me!RéfPièces.Column(7)
Me!Texte24 = Me!RéfPièces.Column(2)
FS
End Sub

Sub FS()

For I = 0 To 30
If IsNull([Détail fiche suiveuse sous-formulaire1]![N° Opération]) Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "FS", acNormal, acAdd
DoCmd.SetWarnings True
'DoCmd.Requery
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acNext
End If
Next I
end sub

quelqu'un pourrait-il mexpliquer que fait le sub FS.
merci pour votre aide
Configuration: Windows XP
Internet Explorer 6.0
Répondre à pil'af  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le mercredi 10 octobre 2007 à 09:29:07
Bonjour

Apparemment ton code est assez ancien, peut-être Access 97, la syntaxe "récente" utilisant plutôt Me.* que Me!* De plus, je ne suis pas familier avec la syntaxe *.Column(n) et je ne vois pas trop à quoi ça peut corespondre dans un formulaire. L'aide VBA de l'access 2003 que j'ai sous les yeux n'a pas l'air ce connaître non plus en tant que collection d'objets.

Sinon, concernant ta procédure FS, je dirais qu'elle souvre en mode ajout, puis une fois que la valeur a été ajoutée, elle fait une petit manip (acPrevious, ac Next) qui devrait permettre de replacer le nouvel enregistrement dans sa position de tri et se replacer en mode ajout : acPrevious va deplacer le curseur sur le dernier enregistrement du recordset trié, et acNext va le replacer dans un nouvel enregistrement.
Tout cela dit avec certains doutes, ne serait-ce parce que cela voudrait dire que l'exécution du code s'interrompt avant le DoCmd.SetWarnings True, ce qui a priori ne sera pas le cas.
Répondre à fourvin

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
JL92, le mercredi 10 octobre 2007 à 09:41:16
Une simple remarque:
avez-vous vu que la ligne DoCmd.Requery est en commentaire ( ' en tête de ligne), donc inopérante.
Est-ce volontaire?
Répondre à JL92

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le mercredi 10 octobre 2007 à 09:44:04
Oui, JL92, c'est justement pour ça que je pense que, à la place, les deux lignes suivantes cherchent à replacer le nouvel enregistrement à sa position dans le recordset trié, et redonner la main pour une nouvelle saisie (je crois que j'avais fait un truc comme ça il y a longtemps !)
Répondre à fourvin

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pil'af, le mercredi 10 octobre 2007 à 09:49:41
Merci pour l'expliquation fourvin, je pense aussi que ce code est assez ancien... mais je n'ai pas vrément le choix je dois faire avec. Le problème est que à chaque fois qu'une valeur est ajouté j'aimerais la copier vers une autre table access... étant assez débutant en vba, j'aurais besoin de quelques conseils...

ps JL92 : la ligne a été mise en commantaire par le concepteur et celà fonctionne, à présent je ne sais pas vraiment à qoi elle sert.

merci de votre aide
Répondre à pil'af

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le mercredi 10 octobre 2007 à 10:01:42
Effectivement, revenons au début : quand tu dis que tu veux extraire des données à partir d'un formulaire, que veux-tu faire exactement ?

D'après ce que tu dis, j'ai l'impression que tu voudrais que les données que tu entres dans le formulaire soient inséres dans une autre table ?

Si c'est bien ce cas, tu pourrais faire la chose suivante : dans les propriétés du formulaire, tu choisis l'évènement "Après Insertion" et tu crées un code dans le genre :
DoCmd.RunSQL "INSERT INTO tablecible (champ1, ...) VALUES (Me.control1, ...)"

Il y a plusieurs façon de le faire mais c'est probablement la méthode la plus rapide.
Répondre à fourvin

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pil'af, le mercredi 10 octobre 2007 à 10:32:19
Pas de grand résultat avec cette méthode ("erreur de syntaxe dans la méthode insert into"), je débute en vba access, bien que je connaisse vba et excel assez bien. Je vais chercher une solution pour contourner ce problème.
merci de ton aide et de tes explication
Répondre à pil'af

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le mercredi 10 octobre 2007 à 10:35:50
Ca arrive aux meilleurs, et je sais de quoi je parle :)

Peux-tu copier ici ta ligne qui contient "INSERT INTO" ?
Répondre à fourvin

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pil'af, le mercredi 10 octobre 2007 à 10:43:24
DoCmd.RunSQL "INSERT INTO gamme tempo (num_operation, description, temps prépa, temps fab) VALUES ([détail fiche suiveuse sous-formulaire1].[N° Opération], [détail fiche suiveuse sous-formulaire1].[RefGamme], [détail fiche suiveuse sous-formulaire1].[texte 16], [détail fiche suiveuse sous-formulaire1].[texte 18])"

Voilà ma très belle ligne certainement bourré d'erreur!!!!
merci :)
Répondre à pil'af

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le mercredi 10 octobre 2007 à 10:46:50
Si "gamme tempo" est ta table cible, il faut que tu l'écrives "... [gamme tempo]..." sinon il croit que "gamme" est le nom de table et "tempo" un mot clé qu'il ne reconnaît pas, d'où le message d'erreur.

De rien :)
Répondre à fourvin

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pil'af, le mercredi 10 octobre 2007 à 11:07:42
c'est pas mieu, en fait g l'impression que access ne trouve pas ma table... pourtant elle est crée (enfin il me semble...). J'ai renommer ma table en "gamme _tempo", oeut etre y a t-il d'autre ligne de code a rajouter....
Hors mis le fatr que cette ligne ne marche pas je pensais l'insérer dans mon sub fs juste avant le end if afin que ma table soit compléter à chaque itération... quand pense tu?
Répondre à pil'af

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fourvin, le jeudi 11 octobre 2007 à 13:14:01
Avant de statuer sur les solutions, il vaut mieux valider le besoin ! Déjà, est-ce que le fait d'avoir une requête qui t'insère dans la table gamme_tempo les valeurs saisies dans le formulaire correspond à ce que tu veux obtenir ?

Si c'est le cas, il y a plusieurs moyens de le faire mais d'expérience, le DoCmd.RunSql est probablement le plus simple. Donc on va s'arranger à la faire marcher !

Si tu dis que ça continue à ne pas marcher, quel est le message d'erreur ou quels sont les symptômes ?
Pour savoir si ta table existe, il suffit de regarder dans la fenêtre base de données (F11), dans les tables.
Si tu renommes ta table là, il faut aussi la renommer dans la requête SQL.
Excuse si tout ça est trivial, mais c'est pour éliminer les source potentielle d'erreur !
Répondre à fourvin

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 pil'af, le jeudi 11 octobre 2007 à 14:46:31
c' est bon g réussi à faire marcher le DoCmd.RunSql :) (j'avais pensé a renommé la table ds ma requete également :) )! par contre je ne peut le faire marcher que manuellement. Je mexplique je voudrais appliquer cette requete à plusieurs sous-formulaires (via une boucle) qui évidemment ont le meme nom ( sinon c pa drole) et access ne l'aplique qu'à un seul :(.Jj'ai dons temporerement placé un bouton par sous formulaire qui applique la requete pour pouvoir me consacrer à l'extraction de la table obtenue vers excel. Je me demande d'ailleur si il est possible de compter le nombre de ligne de ma table gamme_tempo?
merci de ton aide
Répondre à pil'af
Zone de liste VBA/Access (Résolu)Salut à tous je cherche de l'aide pour VBA/Access en faite je veux à partir d'une zone de liste choisir des elements en cliquant sur l'element choisi , les afficher dans une autre zone de liste et les récuperer. merci à tous www.commentcamarche.net/forum/affich-7555434-zone-de-liste-vba-access
Dépassement de capacité vba access (Résolu)salut à tous, je dévelloppe avec vba access et lorsque j'essaie d'effectuer l'opération suivante j'obtiens un dépassement de capacité: dim h as integer h= 12*3600 j 'ai essayer de mette h en long mais ca ne change rien si je... www.commentcamarche.net/forum/affich-2897775-depassement-de-capacite-vba-access
Vba access pb de connection bdd et pb requète (Résolu)Bonjour, J'ai un problème avec ce code il ne fonctionnent pas. je travail sur access 2007 pour un projet qui sera sur access 2003 et j'utilise un livre sur le vba access 2002. Voilà le code: Private Sub cmdEnreg_Click() Dim db As Connection... www.commentcamarche.net/forum/affich-6596950-vba-access-pb-de-connection-bdd-et-pb-requete
VBA et les collections d'objets.VBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme... www.commentcamarche.net/faq/sujet-10397-vba-et-les-collections-d-objets
Macro vba [ouvrir un fichier] (Résolu)Bonjour. Je travaille ac VBA ACCESS et je souhaite ouvrir un fichier .doc par exemple par l'intermédiaire d'une macro. J'ai trouvé une fonction de macro qui se nomme 'Executer Apllication', cette fonction posséde un seul... www.commentcamarche.net/forum/affich-1294896-macro-vba-ouvrir-un-fichier
VBA ACCESS : valeur de champ automatique (Résolu)Bonjour, Je souhaite écrire un petit code VBA spécifiant que le champ "Type" doit prendre automatiquement une valeur donnée (par exemple "Accessoires") lorsqu'on insère un nouvel enregistrement dans le formulaire. Quelle est la syntaxe ? Merci www.commentcamarche.net/forum/affich-5383877-vba-access-valeur-de-champ-automatique
Execution requete sous VBA access 2003 (Résolu)Bonjour tt le monde, Je travaille sur un projet DB sous access 2003, ma question est simple mais je ne m'en sort pas je voudrait simplement executer une requete SQL ecrit sous VBA, j'ai ca comme exemple 'une table ends users (ID,... www.commentcamarche.net/forum/affich-2833500-execution-requete-sous-vba-access-2003
Visual Basic - Introduction Visual Basic est un outil développé par Microsoft pour développer facilement des applications fonctionnant sous Microsoft Windows ©. Visual Basic est, comme son nom l'indique, un outil visuel permettant de créer sans notion de programmation... www.commentcamarche.net/vb/vbintro.php3
VBScript - Objet FileSystemObject (FSO) L'objet FileSystemObject (FSO) permet de manipuler le système de fichiers de Windows. L'utilisation du modèle d'objet FileSystemObject s'effectue en créant une instance de l'objet Scripting.FileSystemObject l'intermédiaire de la commande suivante :... www.commentcamarche.net/vbscript/vbs-fso.php3
Toutes les réponses pour « probleme vba access »