Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1462 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA / ACCESS] ajouter à une liste multi-valuée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA / ACCESS] ajouter à une liste multi-valuée

n°1781163
skezi
Posté le 01-09-2008 à 21:10:00  profilanswer
 

Bonjour
 
J'essai depuis plusieurs jours de modifier ce code pour l'adapter avec un split
 
"code qui fonctionne"

Code :
  1. Private Sub Participants_NotInList(NewData As String, Response As Integer)
  2.     If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des prénoms ?",  _
  3.                        vbYesNo + vbQuestion + vbDefaultButton2, "Ajout" ) = vbYes Then
  4.         DoCmd.RunSQL "INSERT INTO tblPrenoms ( Prénom ) SELECT """ & NewData & """;"
  5.         Response = acDataErrAdded
  6.     Else
  7.         Response = acDataErrContinue
  8.         Participants.Undo
  9.     End If
  10. End Sub


 
Le code ci-dessus permet d'ajouter à une liste déroulante d'un formulaire la valeur manquante et la copie dans la table source.
 
Voici ou j'en suis avec l'ajout d'un split qui a pour but de découper une valeur (nom, prénom) entrée dans une liste déroulante multi-valuée pour ensuite l'ajouter automatiquement dans les champs correspondants de la table Participants (le séparateur est la virgule
 

Code :
  1. Private Sub Participants_NotInList(NewData As String, Response As Integer)
  2. Dim tp As Variant
  3. If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des Participants ?", _
  4. vbYesNo + vbQuestion + vbDefaultButton2, "Ajout" ) = vbYes Then
  5. tp = Split(NewData, "," )
  6. DoCmd.RunSQL "Insert into Participants ( Nom, Prenom ) Values(" & Nom & ", " & Prenom & """ )"
  7. Response = acDataErrAdded
  8. Else
  9. Response = acDataErrContinue
  10. Particpants.Undo
  11. End If
  12. End Sub


 
à mon niveau CAD au raz des pâquerettes, je ne vois pas pourquoi ca ne marche pas, (ni même pourquoi ca pourrais marcher...)  :D  j'obtiens sans arrêt une erreur sur la ligne DoCmd (erreur qui diffère en fonction des modifs que j'y fais genre 424, objet requis , mais lequel ??!!)
 
pourriez-vous m'aider ??
 
merci

mood
Publicité
Posté le 01-09-2008 à 21:10:00  profilanswer
 

n°1781289
olivthill
Posté le 02-09-2008 à 10:28:20  profilanswer
 

L'erreur est dû à l'absence d'apostrophe autour des champs de type alphanumérique.
Il faudrait avoir :

DoCmd.RunSQL "Insert into Participants (Nom, Prenom) Values('" & Nom & "', '" & Prenom & "')"

N.B. En SQL il faut des apostrophes et non pas des guillemets.

n°1781499
skezi
Posté le 02-09-2008 à 16:10:32  profilanswer
 

merci pour ton aide olivthill  
 
on se rapproche, Access me demande si je veux ajouter ma nouvelle valeur à la liste " vous allez ajouter une ligne.." et dès que je clique sur oui j'ai le message suivant " le texte entré n'est pas un élément de la liste..." et seul un enregistrement vide est créé

n°1781543
olivthill
Posté le 02-09-2008 à 17:33:41  profilanswer
 

J'ai l'impression que les variables Nom et Prenom ne contiennent rien.
Il faudrait peut-être les remplir avec

Prenom = Split(NewData, "," )(0)  
Nom = Split(NewData, "," )(1)

à la place de

tp = Split(NewData, "," )


Message édité par olivthill le 02-09-2008 à 17:34:15
n°1781544
MagicBuzz
Posté le 02-09-2008 à 17:36:27  profilanswer
 

ou plutôt  

Code :
  1. tp = Split(NewData, "," )
  2. Prenom = tp(1)
  3. Nom = tp(2)


 
(VB indexe à partir de 1 et c'est mieux de n'appeler Split qu'une fois ;))

n°1781563
skezi
Posté le 02-09-2008 à 18:09:30  profilanswer
 

J'ai essayé ta derniere solution et j'obtiens une erreur 9 (indice hors de la sélection) sur ta ligne 3
J'ai donc essayé ta première solution et on y est presque !!, les valeurs sont bien ajoutées à la table et dans les bons champs, mais access m'affiche toujours le message "stupide" comme quoi, le texte entré ne fait pas parti de la liste et que je dois sélectionner un élément de cette liste
 
voici le code à jour
 

Code :
  1. Private Sub Participants_NotInList(NewData As String, Response As Integer)
  2. Dim tp As Variant
  3. Dim Nom As String
  4. Dim Prenom As String
  5. If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des Participants ?", _
  6. vbYesNo + vbQuestion + vbDefaultButton2, "Ajout" ) = vbYes Then
  7. Nom = Split(NewData, "," )(0)
  8. Prenom = Split(NewData, "," )(1)
  9. DoCmd.RunSQL "Insert into Liste_Participants ( Nom, Prenom ) Values('" & Nom & "', '" & Prenom & "')"
  10. Response = acDataErrAdded
  11. Else
  12. Response = acDataErrContinue
  13. Liste_Participants.Undo
  14. End If
  15. End Sub


 
Merci pour ton aide !!


Message édité par skezi le 02-09-2008 à 18:10:50
n°1781722
olivthill
Posté le 03-09-2008 à 09:33:12  profilanswer
 

La liste.
Peut-être qu'elle aurait besoin d'être rechargée à partir de la table. Pour cela je propose de rajouter la ligne suivante après le RunSQL :

Me!Nom_de_la_liste.Requery

Me est un mot clé qui désigne la form en cours. Nom_de_la_liste est l'identifiant qui a été donnée à la liste, que je ne connais pas, et qu'il faut remplacer par son véritable nom.

n°1781949
skezi
Posté le 03-09-2008 à 13:34:06  profilanswer
 

j'obtiens une erreur 2118 avec cette ligne
Je ne vais pas pouvoir suivre tes conseils aujourd'hui, mais dès que je peux je reviens.
 
Merci

n°1783149
skezi
Posté le 05-09-2008 à 15:10:05  profilanswer
 

Bonjour,
 
Je n'arrive toujours pas à faire sauter le message de sélection, mais autre problème, l'auto correction ne marche pas, il faut donc faire défiler la liste pour savoir si un participant est déjà inscrit.
 
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA / ACCESS] ajouter à une liste multi-valuée

 

Sujets relatifs
VBA: obligé d'ouvrir un fichier pour en récupérer des données?[Resolu][C#, ASP.net / access] problème requete update
applet&html&accessVBA - IE - enregistrer sous - pb de control
[VBS] copie d'un fichier avec une liste d'utilisateurediteur SQL pour Access
[Javascript] Problème liste déroulante et jquery[VBA] Reprise données Excel dans tableau Word
[VBA] Tableau XLS et document DOC[VBA - Excel] Envoi d'un mail via un service gratuit
Plus de sujets relatifs à : [VBA / ACCESS] ajouter à une liste multi-valuée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR