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

VBA Access Discussion :

Exporter code VBA d'un formulaire vers un etat ou Liste de données [AC-2007]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut Exporter code VBA d'un formulaire vers un etat ou Liste de données
    Bonjour,

    Voila j'ai créé un formulaire avec du code VBA derrière:
    En fait on sélectionne un article dans une ListBox et je lance un code.
    Ce code détermine un nombre de pièce stock et une valeur de stock en utilisant des requêtes SQL et en analysant le résultat.
    Je posterai le code si nécessaire.

    Ces requêtes SQL utilisent la valeur contenu dans la ListBox Article.

    Mon probleme c'est que ça le calcul pour un article (celui sélectionné).
    J'aimerais maintenant sortir une feuille de donnée, ou un état, dont chaque ligne contient le résultat de mes calcul.
    IdArticle | QtStock | ValeurStock.

    Quel doit être le déclencheur pour lancer mon code. Et sur quelle valeur pointer mes requêtes SQL du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.TxtQtRecept.Value = MaBase.OpenRecordset("SELECT sum(QtReception) FROM T_LigneReception " & " WHERE IdArticle =" & Me.LstArticle.Value).GetRows()(0, 0)
    Je remplace Me.LstArticle.Value par quoi ?
    J'ai déjà essayé de le remplacer par la valeur de ma txtbox(IdArticle) du formulaire en mode Feuille de données.

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Non tu dois juste créer une requete sélection avec une liason entre ta table où tu as la liste de tes articles et la table où tu a la liste des réceptions.
    Dans cette requete tu affiches 2 champs, l'article et la qté receptionnée.
    Ensuite tu met un regroupement sur l'article et une somme sur la quantité

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Muhad'hib Voir le message
    Non tu dois juste créer une requete sélection avec une liason entre ta table où tu as la liste de tes articles et la table où tu a la liste des réceptions.
    Dans cette requete tu affiches 2 champs, l'article et la qté receptionnée.
    Ensuite tu met un regroupement sur l'article et une somme sur la quantité
    Merci de votre réponse.
    Ça je sais faire, mais c'est pour le calcul de la valeur du stock que j'arrive pas à intégrer mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set MaBaseDeDonnees = CurrentDb
    Set MaBase = OpenDatabase(MaBaseDeDonnees.Name)
     
    Set RecSet = MaBase.OpenRecordset("SELECT DateReception,IdArticle,QtReception, PrixUnitaire FROM T_LigneReception WHERE IdArticle=" & Me.LstArticle.Value & " ORDER BY DateReception DESC")
     
    Razchamps
    LectureTable
    ensuite j'appelle mon calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub LectureTable()
    On Error GoTo err
    RechercheValeurStock RecSet.GetRows(1000)
    Exit Sub
    err:
    'Si on est sur le dernier enregistrement
    'alors ne rien faire, sinon avertir
    If err.Number <> 3021 Then
     MsgBox "Une erreur est survenue pendant la lecture des données", vbCritical, "Erreur"
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub RechercheValeurStock(Tableau As Variant)
    Dim I As Integer
    Dim Restant As Integer
    Dim NombreArt
    Dim Valeur
     
    Me.TxtValeurStock2.Value = 0
    rest = Me.TxtQtStock.Value
    'Récupère le nombre d'enregistrements Lus
    nbLus = UBound(Tableau, 2) + 1
     
    'Calcul le montant stock
    For I = 0 To nbLus - 1
     
        If rest >= Tableau(2, I) Then
            NombreArt = Tableau(2, I)
        Else
            NombreArt = rest
        End If
        rest = rest - NombreArt
     
      'Calcul valeur stock
        If NombreArt > 0 Then
            Valeur = NombreArt * Tableau(3, I)
        Else
            Valeur = 0
        End If
        Me.ValeurI.Value = I + 1
        Me.TxtValeurStock2.Value = Me.TxtValeurStock2.Value + Valeur
        If rest <= 0 Then
        I = nbLus - 1
        End If
    Next I
    End Sub
    Peut on utiliser ce code dans le créateur de requête ? je pense pas.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Encore une fois, je pense que tu devrais faire une requete qui te donne ton résultat indépendament de ton formulaire. Il ne va pas etre simple de contruire une table/requete en utilisant une zone de liste.

    Oui tu peux utiliser une fonction dans une requete : il faut que ce soit une fonction (Function au lieu de Sub) et qu'elle soit Public.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Muhad'hib Voir le message
    Encore une fois, je pense que tu devrais faire une requete qui te donne ton résultat indépendament de ton formulaire. Il ne va pas etre simple de contruire une table/requete en utilisant une zone de liste.

    Oui tu peux utiliser une fonction dans une requete : il faut que ce soit une fonction (Function au lieu de Sub) et qu'elle soit Public.
    Merci pour votre réponse, et je suis parti dans cette direction.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2009, 19h48
  2. Réponses: 3
    Dernier message: 27/09/2007, 12h51
  3. Récupérer le code VBA d'un formulaire
    Par Peanut dans le forum IHM
    Réponses: 19
    Dernier message: 15/12/2006, 16h18
  4. Proteger le code VBA d'un formulaire
    Par ecarbill dans le forum Sécurité
    Réponses: 6
    Dernier message: 25/08/2006, 17h22
  5. Réponses: 2
    Dernier message: 27/01/2006, 15h42

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