IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Ajout plusieurs valeur via VBA [AC-2016]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Ajout plusieurs valeur via VBA
    Bonjour à tous,

    J'ai un formulaire où je choisi un fournisseur qui me donne une, liste déroulante avec les refs pour ce fournisseur puis qui me donne les tarifs pratiqués. Si le tarif n'est pas présent je rentre une nouvelle valeur et un code VBA entre cette valeur dans la la table tarif dans le champ "prix_unitaire".
    Le problème c'est que je veux que lorsqu'un nouveau tarif est entré le code reporte la ref et le fournisseur. J'ai un code qui permet d'entrer le tarif mais impossible de copier les autres valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub lstPrix_NotInList(NewData As String, Response As Integer)
     
            If MsgBox("Voulez-vous ajouter " & NewData & " aux tarifs ?", _
            vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
            DoCmd.RunSQL "INSERT INTO fournisseur_produit ( article_ID, fournisseur_ID, prix_unitaire ) SELECT """ & Modifiable12 & """,""" & Modifiable16 & """,""" & NewData & """;"
            Response = acDataErrAdded
        Else
            Response = acDataErrContinue
            zl_marque.Undo
        End If
    End Sub
    Si quelqu'un peut m'aider à récupérer les valeurs qui se trouve dans "Modifiable12" et "Modifiable16" pour les entrer dans la table fournisseur_produit en tant que "article_ID" et "fournisseur_ID".

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    ce n'est pas SELECT mais VALUES() qu'il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub lstPrix_NotInList(NewData As String, Response As Integer)
     
            If MsgBox("Voulez-vous ajouter " & NewData & " aux tarifs ?", _
            vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
            DoCmd.RunSQL "INSERT INTO fournisseur_produit ( article_ID, fournisseur_ID, prix_unitaire ) VALUES(""" & Me.Modifiable12 & """,""" & Me.Modifiable16 & """,""" & NewData & """);"
            Response = acDataErrAdded
        Else
            Response = acDataErrContinue
            zl_marque.Undo
        End If
    End Sub
    si le prix en contient un, attention au séparateur de décimales qui doit être le point et pas la virgule dans VBA.
    si article_ID est un numéro auto, il ne faut pas l'inclure dans la requête INSERT
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Article_ID est effectivement un numéro auto. Avec ton code j'ai une erreur
    Erreur de compilation: Membre de méthode ou de données introuvable
    Je fais pas mal de recherches mais impossible de trouver un exemple similaire...

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Article_ID est effectivement un numéro auto
    j'ai pourtant dit qu'il fallait l'enlever de la requête non ?
    peux-tu reposter ton code modifié ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    j'ai pourtant dit qu'il fallait l'enlever de la requête non ?
    peux-tu reposter ton code modifié ?
    Je l'ai enlevé pourtant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub lstPrix_NotInList(NewData As String, Response As Integer)
     
            If MsgBox("Voulez-vous ajouter " & NewData & " aux tarifs ?", _
            vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
            DoCmd.RunSQL "INSERT INTO fournisseur_produit ( fournisseur_ID, prix_unitaire ) VALUES(""" & Me.lstFournisseurs & """,""" & NewData & """);"
            Response = acDataErrAdded
        Else
            Response = acDataErrContinue
            zl_marque.Undo
        End If
    End Sub
    Il faut savoir que mon formulaire sert à créer une commande. Je choisi la date et j'ai une liste déroulante (lstFournisseurs) pour choisir mon fournisseur.
    Ensuite dans mon sous formulaire format feuille de données j'ai une liste déroulante avec mes articles filtrés depuis la sélection du fournisseur, la quantité ainsi qu'une liste pour sélectionner le tarif appliqué.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Je l'ai enlevé pourtant
    oui, oublie, c'est une erreur.
    peux-tu modifier ton code comme cela et poster le contenu du Debug.Print ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strSQL as String
     
    strSQL  = "INSERT INTO fournisseur_produit ( fournisseur_ID, prix_unitaire ) VALUES(""" & Me.lstFournisseurs & """,""" & NewData & """);"
    Debug.Print strSQL
    DoCmd.RunSQL strSQL
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Comme j'ai pu le montrer je ne suis pas un forcément à l'aise avec le VBA mais après beaucoup d'essais et avec ton aide tee_grandbois j'ai réussi. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub lstPrix_NotInList(NewData As String, Response As Integer)
     
            If MsgBox("Voulez-vous ajouter " & NewData & " aux tarifs ?", _
            vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
            DoCmd.RunSQL "INSERT INTO fournisseur_produit ( article_ID, fournisseur_ID, prix_unitaire ) VALUES(""" & lstArticles & """,""" & [Forms]![commandes_création]![fournisseur_ID] & """,""" & NewData & """);"
            Response = acDataErrAdded
        Else
            Response = acDataErrContinue
            zl_marque.Undo
        End If
    End Sub
    J'ai fini par penser qu'il devait y avoir un problème avec "lstFournisseurs" car quand celui-ci n'était plus présent j'arrivais à avoir un retour de lstArticles.
    J'ai aussi enlevé les Me.

    Par contre j'ai un message qui me demande confirmation est-ce que je peux l'enlever ?

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Par contre j'ai un message qui me demande confirmation est-ce que je peux l'enlever ?
    oui, soit avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' désactive les messages d'avertissement
    DoCmd.SetWarnings False
    DoCmd.RunSQL "INSERT INTO fournisseur_produit ( article_ID, fournisseur_ID, prix_unitaire ) VALUES(""" & lstArticles & """,""" & [Forms]![commandes_création]![fournisseur_ID] & """,""" & NewData & """);"
    DoCmd.SetWarnings True
    ou aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.Execute "INSERT INTO fournisseur_produit ( article_ID, fournisseur_ID, prix_unitaire ) VALUES(""" & lstArticles & """,""" & [Forms]![commandes_création]![fournisseur_ID] & """,""" & NewData & """);" , dbFailonError
    J'ai aussi enlevé les Me.
    Me. est associé au contrôles du formulaire courant (celui où est écrit le code) cela évite d'écrire à chaque fois Forms!LeNomduFormulaire. Par contre si on utilise un contrôle d'un autre formulaire, il faut évidemment préciser le nom.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une bibliothèque via vba
    Par vavou dans le forum VBA Access
    Réponses: 9
    Dernier message: 16/07/2014, 14h35
  2. Réponses: 1
    Dernier message: 19/07/2010, 11h46
  3. [XL-2007] Ajouter des MFC via vba
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2010, 12h00
  4. Ajouter plusieurs valeurs à un tableau
    Par artotal dans le forum Langage
    Réponses: 6
    Dernier message: 23/02/2009, 13h15
  5. transmettre plusieurs valeurs via a href
    Par zut94 dans le forum Langage
    Réponses: 6
    Dernier message: 10/08/2006, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo