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 :

J'ai 3 fonctions mais j'arrive pas a en appeller une


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut J'ai 3 fonctions mais j'arrive pas a en appeller une
    J'ai 3 fonctions la première remplie la deuxième, et la troisième appelle le seconde.

    C'est au moment d'appelé la seconde que je bloque car je ne doit pas remplir les variables de la deuxième fonction vue qu'elles sont déjà remplie.

    Quelqu'un serait-il répondre à mon problème?

    je reste à disposition merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et Bienvenu sur le forum.

    Tu ne penses pas qu'avec le code de tes trois fonctions on y verrait plus clair ?

    Starec

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Voilà ma première fonction qui remplie la dauxième:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Commande15_Click()
    Dim total As Single
    total = test.facture(Me.zt_datepiece, Me.zt_numeropiec, Me.zt_tier, Me.zt_somme_ttc, Me.zt_somme_solde_du)
    End Sub
    La deuxième fonction, j'aurais pue faire une autre fonction pour le suite de if imbriqué mais je suis allé au plus simple pour l'instant:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    Option Compare Database
    Dim nb As Integer
    Dim fact_tab(5, 9) As String
     
    Function facture(datepiec As Date, numero As String, TIER As String, total_ttc As Single, somme_du As Single) As Single
     
     
     
    Dim lg As Integer
    For i = 0 To 9
        fact_tab(0, i) = -1
    Next
    If nb < 0 Or nb > 9 Then
    nb = 0
    End If
    If fact_tab(3, 0) <> TIER And fact_tab(2, 0) <> numero Then
    nb = 0
    End If
    If nb = 0 Then
        fact_tab(1, 0) = datepiec
        fact_tab(2, 0) = numero
        fact_tab(3, 0) = TIER
        fact_tab(4, 0) = total_ttc
        fact_tab(5, 0) = somme_du
        nb = 1
    Else
    If nb = 1 Then
        fact_tab(1, 1) = datepiec
        fact_tab(2, 1) = numero
        fact_tab(3, 1) = TIER
        fact_tab(4, 1) = total_ttc
        fact_tab(5, 1) = somme_du
        nb = 2
    Else
    If nb = 2 Then
        fact_tab(1, 2) = datepiec
        fact_tab(2, 2) = numero
        fact_tab(3, 2) = TIER
        fact_tab(4, 2) = total_ttc
        fact_tab(5, 2) = somme_du
        nb = 3
    Else
    If nb = 3 Then
        fact_tab(1, 3) = datepiec
        fact_tab(2, 3) = numero
        fact_tab(3, 3) = TIER
        fact_tab(4, 3) = total_ttc
        fact_tab(5, 3) = somme_du
        nb = 4
    Else
    If nb = 4 Then
        fact_tab(1, 4) = datepiec
        fact_tab(2, 4) = numero
        fact_tab(3, 4) = TIER
        fact_tab(4, 4) = total_ttc
        fact_tab(5, 4) = somme_du
        nb = 5
    Else
    If nb = 5 Then
        fact_tab(1, 5) = datepiec
        fact_tab(2, 5) = numero
        fact_tab(3, 5) = TIER
        fact_tab(4, 5) = total_ttc
        fact_tab(5, 5) = somme_du
        nb = 6
    Else
    If nb = 6 Then
        fact_tab(1, 6) = datepiec
        fact_tab(2, 6) = numero
        fact_tab(3, 6) = TIER
        fact_tab(4, 6) = total_ttc
        fact_tab(5, 6) = somme_du
        nb = 7
    Else
    If nb = 7 Then
        fact_tab(1, 7) = datepiec
        fact_tab(2, 7) = numero
        fact_tab(3, 7) = TIER
        fact_tab(4, 7) = total_ttc
        fact_tab(5, 7) = somme_du
        nb = 8
    Else
    If nb = 8 Then
        fact_tab(1, 8) = datepiec
        fact_tab(2, 8) = numero
        fact_tab(3, 8) = TIER
        fact_tab(4, 8) = total_ttc
        fact_tab(5, 8) = somme_du
        nb = 9
    Else
    If nb = 9 Then
        fact_tab(1, 9) = datepiec
        fact_tab(2, 9) = numero
        fact_tab(3, 9) = TIER
        fact_tab(4, 9) = total_ttc
        fact_tab(5, 9) = somme_du
        nb = 10
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
     
     
    lg = fact_tab(0, 0)
    Set fs = CreateObject("Scripting.FileSystemObject")
    'Création de l'objet fso
    nom_fichier = "D:\Stage\test.doc"
    Set a = fs.CreateTextFile(nom_fichier, True)
    'Création d 'un fichier
     
     
     
    a.writeline ""
    'écriture dans le fichier
    a.writeline ""
    a.writeline "hello"
    a.writeline ""
    a.writeline ""
    a.writeline "" & fact_tab(0, 0)
    a.writeline "" & fact_tab(1, 0)
    a.writeline "" & fact_tab(2, 0)
    a.writeline "" & fact_tab(3, 0)
    a.writeline "" & fact_tab(4, 0)
    a.writeline "" & fact_tab(5, 0)
    a.writeline ""
    a.writeline ""
    a.writeline "" & fact_tab(0, 1)
    a.writeline "" & fact_tab(1, 1)
    a.writeline "" & fact_tab(2, 1)
    a.writeline "" & fact_tab(3, 1)
    a.writeline "" & fact_tab(4, 1)
    a.writeline "" & fact_tab(5, 1)
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline "" 
    a.writeline ""
     
    'completer la facture
     
    a.Close
    'fermeture fichier
    End Function
    ici les a.writeline servent juste à voir si ça marche à l'avenir ils n'y seront plus.


    et la troisième fonction:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Function relance(TIER As String, TIERSOCIET As String, TEL As String, FAX As String, FACADR1 As String, FACADR2 As String, FACADR3 As String, FACCODEPOS As String, FACVILLE As String, total_du As Single) As Single
     
    Dim nom As String
    Dim fact As Single
     
    fact = test.facture()
    nom = "relance_" & TIERSOCIET
    Set fs = CreateObject("Scripting.FileSystemObject")
    'Création de l'objet fso
    nom_fichier = "D:\Stage\" & nom & ".doc"
    Set a = fs.CreateTextFile(nom_fichier, True)
    'Création d 'un fichier
     
     
     
    a.writeline ""
    'écriture dans le fichier
    a.writeline "Prevenscop"
    a.writeline "8 rue Jacques Babinet"
    a.writeline "31100 Toulouse"
    a.writeline ""
    a.writeline ""
    a.writeline "                                                  " & TIERSOCIET
    a.writeline "                                                  " & FACADR1 & FACADR2 & FACADR3
    a.writeline "                                                  " & FACCODEPOS & faccille
    a.writeline "                                                  Téléphone " & TEL
    a.writeline "                                                  Fax " & FAX
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline ""
    a.writeline "Madame, Monsieur,"
    a.writeline ""
    a.writeline ""
    a.writeline "Sauf erreur ou omission de notre part, nous n'avons pas reçu à ce jour votre règlement ou "
    a.writeline "notre traite acceptée, correspondant au relevé de la facture ci-dessous."
    a.writeline ""
    a.writeline "Numéro : " & NUMEROPIEC
    a.writeline "Date : " & datepiec
    a.writeline "Montant TTC : " & totalttc
    a.writeline "Solde dû : " & total_du
    a.writeline "Echéance : " & dateech
    a.writeline ""
    a.writeline "Nous vous remercions de bien vouloir nous faire parvenir votre règlement dans les "
    a.writeline "meilleurs délais ou de nous retourner ce courrier en nous indiquant vos dates et mode de "
    a.writeline "paiement."
    a.writeline ""
    a.writeline "Dans le cas où vous auriez effectué ce règlement, veuillez ne pas tenir compte de ce "
    a.writeline "courrier."
    a.writeline ""
    a.writeline "Vous remerciant par avance de votre diligence, nous vous prions d'agréer, Madame, "
    a.writeline "Monsieur, l'expression de nos sentiments les meilleurs."
    a.writeline ""
    a.writeline "                                              Le service comptabilité"
    a.writeline ""
    a.writeline ""
    'completer la facture
    a.Close
    'fermeture fichier
    End Function
    et par la suite je voudrais inséré les donnée de la fonction facture dans cette page word.

    Merci d'avance

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Une première chose, dans ta 2nd fonction au lieu d'utiliser des if, pourquoi ne fais tu pas :

    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
     
    ...
    If nb < 0 Or nb > 9 Then
    nb = 0
    End If
    If fact_tab(3, 0) <> TIER And fact_tab(2, 0) <> numero Then
    nb = 0
    End If
     
        fact_tab(1, nb) = datepiec
        fact_tab(2, nb) = numero
        fact_tab(3, nb) = TIER
        fact_tab(4, nb) = total_ttc
        fact_tab(5, nb) = somme_du
        nb = nb + 1
    ...
    Par rapport à ton problème.
    Tu souhaites appeler la second fonction à partir de la troisième, sans remplir de nouveau ta variable.

    Donc tu peux soit ajouter un boolean en parametre de ta 2nd fonction et mettre dans un If (tonBooleen) Then ... End If la partie que tu ne souhaites appeler que de temps en temps.

    Mais au delà de ça, n'hésites pas à dispatcher tes traitement de la 2nd fonction dans d'autres fonctions et de créer une fonction 2ndBis qui n'effectue qu'une partie du traitement.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    @ Umbakrail je comprend pas bien, comment faire avec le boolean pour que quand j'appelle la fonction je n'est pas besoin d'inséré des valeurs pour les paramètres.

    Par exemple si je veux récupérer le 3ème valeur de ma fonction factures normalement je doit donné les valeurs en entrées, pour ensuite avoir les valeurs en sorties et ainsi choisir celle que je veux.

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Ok, je comprend mieux ton soucis.

    Donc tu peux faire une fonction de ce type (pour la 2nd)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function facture(Optional datepiec As Date, Optional numero As String, Optional TIER As String, Optional total_ttc As Single, Optional somme_du As Single) As Single
     
    ...
     
    If (datepiec <> null) Then
     
      //mettre ici la partie du code utile lorsque l'on passe les paramêtres
     
    End if
     
    ...
     
    End Function
    Il faut ajouter Optional devant tes paramêtres de function.

    Ainsi, tu pourras appeler ta function de deux manières, avec, ou sans les paramêtres.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    umbakrail tu as éclaircie un peu mon problème et je me suis aperçue que j'ai donné un mauvais exemple.

    A partir de la fonction relance j'appelle la fonction facture sans aucun paramètres en entré car de relance je peux pas les renseignés mais je souhaite que la fonction facture m'envoie les valeurs que j'ai au préalable enregistré dans le tableau grâce à comande15_click.

    J'espère que ça sera un peu plus clair

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Tu as fact_tab et nb comme variable global, ne suffirait-il pas d'utiliser ces variables ??

    Pas besoin de passer par facture pour récupérer le contenu de fact_tab, et nb te permet de pointer sur la bonne ligne.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup umbakrail en me disant ça j'ai mit la fonction facture dans le même module que relance (qui marche comme çà aujourd'hui alors qu'hier non ) ainsi que le tableau et nb en paramètre global et j'ai réussi.

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    appel moi Umba

    ++

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

Discussions similaires

  1. [PHP 5.0] Mes mails partent mais n'arrivent pas !
    Par zouberi dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2009, 09h42
  2. Réponses: 22
    Dernier message: 18/05/2007, 17h46
  3. Réponses: 4
    Dernier message: 16/01/2007, 13h16
  4. Réponses: 13
    Dernier message: 19/10/2006, 19h14
  5. Réponses: 1
    Dernier message: 23/01/2006, 22h23

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