|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Bonjour,
j'ai un formulaire (avec 2 sous formulaire) qui permet de saisir des infos. Lorsque l'on clic sur le bouton enregistrer, une fenêtre s'ouvre pour aller chercher un fichier Excel et ainsi récupérer des données pour les autres tables. Tout fonctionne bien même l'enregistrement. Mon problème c'est que je n'arrive pas a mettre mes champs de mon formulaire et sous-formulaire a vide une fois l'enregistrement terminé. J'ai voulu mettre un: à la fin de mon programme mais ca ne marche pas. Il dis que l'opération atteindre l'enregistrement n'est pas disponible pour le moment. Savez vous pourquoi? Je vous met mon code en entier. Code :
|
||
|
|
00
|
|
|
#2 | |||
|
Membre actif
![]() ![]() Inscription : septembre 2008 Messages : 124 ![]() |
Bonjour,
alors je sais ça ne répond pas à votre question, mais c'est bon à savoir : quand vous déclarez des variables de cette façon : Citation:
Par exemple pour la 1e ligne, toutes les variables seront de type Variant sauf "unite" qui sera bien de type String. Pour les déclarer toutes de type String, il faur écrire : Code :
Dim nPMOA As String, sSQL As String, sSQL0 As String (et ainsi de suite) |
|||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Merci de cette information je ne savais pas.
J'étais persuadé d'avoir lu quelque part que ca marché comme ca. C'est bizarre que je n'ai pas eu de msg d'erreur lorsque j'ai lancé mon prog. |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() ![]() Inscription : septembre 2008 Messages : 124 ![]() |
En fait, ça peut effectivement bien fonctionner : tant que tu affectes à une variable Variant une donnée qui est compatible avec les traitements que tu effectueras ensuite, aucune erreur ne sera générée. Après c'est toujours mieux d'utiliser les types précis par principe et pour l'espace occupé en mémoire.
Pour le qui bugge, tu peux vérifier que l'ajout de données est bien autorisé dans ton formulaire : dans les propriétés du formulaire, onglet "Données", propriété "Ajout autorisé". |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
La propriété ajout autorisé est bien coché dans mon formulaire comme mes sous formulaire.
Ca enregistre très bien mes je voudrai a la fin que mes champs revienne a vide. Et c'est la que ca bug. |
|
|
00
|
|
|
#6 | ||
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
Bonjour,
Ne suffit-il pas de parcourir les contrôles que tu souhaites mettre à vide ? Avec genre un For Each sur tous les contrôles, et ensuite tu vérifies le type du contrôle avec TypeOf. En gros (à vue de nez hein...) : Code :
PS : merci antoinev2, j'ignorais aussi le problème de déclaration des variables... Je viens de vérifier, tu as parfaitement raison ^^' |
||
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
J'y ai pensé mais dans se cas ca enregistre a vide.
Si je met avant mon programme ca ne marche pas non plus. |
|
|
00
|
|
|
#8 |
|
Futur Membre du Club
![]() Inscription : septembre 2011 Messages : 32 ![]() |
Je n'y connais rien en VBA et ma réponse va peut être paraître simpliste, mais pourquoi ne pas simplement mettre un bouton "enregistrement suivant" auquel tu applique une macro avec action "atteindreEnregistrement" et en argument ";;Nouveau;"
Edit: Oups j'ai oublier le "?" à la fin de ma phrase x) |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
je ne peux pas (enfin a ma connaissance) appliquer une macro et un code évènementielle à un bouton.
La macro nouveau enregistrement équivaux en vba à : |
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : septembre 2011 Messages : 32 ![]() |
Dans les Macros, une action s'intitule "Executer code". Il te suffit d'utiliser cette action à la suite de la première et d'y insérer ton code je pense (à voir hein !).
|
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Merci.
Mais ca ne marche pas. Il n'exécute pas mon code. Il enregistre seulement. |
|
|
00
|
|
|
#12 | ||
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
Citation:
Citation:
Si c'est juste ça le problème, tu mets juste à la fin de ton code : Et la macro va s'exécuter... |
||
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Merci Beub.
mais j'ai un msg d'erreur 2502, l'action requière un argument Nom de macro. Je ne sais pas ce qu'il veux. j'ai utilisé le code que tu m'a dis: |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Bon j'ai réussit mais j'ai tjs le même msg:
l'opération atteindre l'enregistrement n'est pas disponible pour le moment Qu'est-ce que je peux faire d'autre, |
|
|
00
|
|
|
#15 | ||
|
Invité régulier
![]() Inscription : mars 2011 Messages : 52 ![]() |
je ne sais pas si je peux me permettre de répondre (novice)
mais moi dans mon formulaire j'ai fait : Code :
|
||
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Bien sur que tu peux te permettre de répondre.
Que l'on soit novice ou pas on peux très bien avoir la réponse. Malheureusement la tienne ne fonctionne pas. ^^ J'ai tjs le même msg d'erreur. Mais merci quand même. |
|
|
00
|
|
|
#17 |
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
Tu devrais peut-être revoir tes requêtes, il y a peut-être une liaison qui entraine une erreur. Il y a tellement de code et de requêtes (et si peu de commentaires...) que je n'ai pas le courage de regarder... 250 lignes pour une fonction, quand même... En VBA, je dépasse jamais les 100 lignes, je m'y perds après
![]() Fin, je doute que la solution vienne à proprement parler du code en lui-même. Si ça plante, c'est parce que quelque chose ne va pas dans tes tables/requêtes (à mon avis... |
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Je ne pense pas que le problème vienne de mes tables ou de mes requêtes.
Mais plutôt un problème de mémoire du a mes recordset. je vais les vider pour voir si ca viens de la. Et il n'y a pas 250 lignes (enfin je crois lol) et c'est tout le tps la même chose. Je répète la même opération par table. Le début de mon code se sert d'une fonction pour parcourir un fichier excel et importer les données. Et ce n'est pas une fonction mon programme. mais c'est vrai qu'il n'y a pas de commentaire et donc dur a comprendre. Même pour moi. lol |
|
|
00
|
|
|
#19 | |||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
salut à tous,
Citation:
Citation:
Citation:
à l'ouverture tu peux ajouter manuellement un nouvel enregistrement? |
|||
|
|
00
|
|
|
#20 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
En faite j'ai créé un formulaire (grâce à un code trouver sur le net) à onglet.
Les onglets sont des boutons qui lorsqu'on appuie dessus affecte une source à un sous formulaire situé juste en dessous. Lorsque je clic sur le bouton correspondant à mon formulaire de saisie, j'arrive effectivement à un nouvelle enregistrement. Mais je voudrai qu'il se remette à jour directement lorsque j'appuie sur le bouton enregistrer de mon formulaire d'ajout, afin d'éviter des erreurs de manipulation. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com