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 :

Appeller une sous fonction dans la fonction principale [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut Appeller une sous fonction dans la fonction principale
    Bonjour,
    je sais que ma question peut parraître stupide mais bon.
    J'ai créé la sous fonction suivante

    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
    Public Sub ExportTable()
     
       ' déclaration des variables
       Dim tabListe() As String             ' tableau où on va stocker la liste des tables
       Dim xlApp As Excel.Application       ' ne pas oublier de cocher la référence Excel
       Dim xlBook As Excel.Workbook         ' le classeur où se trouve la feuille
       Dim xlSheet As Excel.Worksheet       ' la feuille où on va stocker les tables
       Dim db As DAO.Database              ' nous utilisons la bibilothèque DAO
       Dim rst As DAO.Recordset             ' le recordset pour récupérer les données des tables
       Dim i As Integer                     ' pour boucler sur les tables
       Dim j As Integer
     
     
       Set db = CurrentDb
     
       ' on rempli le tableau avec 8 tables
       ReDim tabListe(8)
     
        tabListe(0) = "Béton"
        tabListe(1) = "Intervention_chaussée"
        tabListe(2) = "Ponceau"
        tabListe(3) = "ActConn"
        tabListe(4) = "Bretelle"
        tabListe(5) = "Gravier"
        tabListe(6) = "Autres_éléments"
        tabListe(7) = "Parachèvement_3_ans_total"
     
       ' on créé notre classeur Excel
       Set xlApp = CreateObject("Excel.Application")
       Set xlBook = xlApp.Workbooks.Add
     
       ' bouclage sur les tables pour remplir la feuille
       For i = 0 To UBound(tabListe()) - 1
     
            Set xlSheet = xlBook.Worksheets.Add
            xlSheet.Name = tabListe(i)
                ' les entetes
                '  .Fields(Index).Name renvoie le nom du champ
     
                Set rst = CurrentDb.OpenRecordset(tabListe(i), dbOpenSnapshot)
     
                For j = 0 To rst.Fields.Count - 1
                    xlSheet.Cells(1, j + 1) = rst.Fields(j).Name
                        ' Nous appliquons des enrichissements de format aux cellules
                         With xlSheet.Cells(1, j + 1)
                        .Interior.ColorIndex = 15
                        .Interior.Pattern = xlSolid
                        .Borders(xlEdgeBottom).LineStyle = xlContinuous
                        .Borders(xlEdgeBottom).Weight = xlThin
                        .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
                        .HorizontalAlignment = xlCenter
                        End With
                 Next j
     
     
            Set rst = db.OpenRecordset("SELECT * FROM " & tabListe(i) & ";")
            xlSheet.Range("A2").CopyFromRecordset rst
     
            Set rst = Nothing
       Next i
     
       MsgBox "Fin de traitement -  votre fichier Excel a été enregistré dans le dossier rapport"
        xlBook.SaveAs CurrentProject.Path & "\Rapport\rapport.xls"
     
       ' libération des objets
       'xlBook.Save
       xlApp.Quit
       Set xlSheet = Nothing
       Set xlBook = Nothing
       Set xlApp = Nothing
     
    End Sub
    Mais je suis incapable de faire son appel, pourtant elle ne semble pas nécessité d'argument. Lors de la compilation j'obtient l'erreur suivante

    Erreur de compilation: erreur de syntaxe.

    J'ai tenté les frome d'appel suivant:

    ExportTable()
    Sub ExportTable()
    Public Sub ExportTable()
    VARIABLESTRING = ExportTable()

    Je ne sais plus quoi essayé, je sais que ma sub func fonctionne car je suis capable de l'exécuter seul

    Un ptit coup de main serait fort apprécié
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Bonjour

    Une procédure Sub n'est pas une fonction, aussi, tu ne peux l'affecter à une variable. Les parenthèses ne doivent donc pas être précisées.

    Il suffit d'inscrire (tu vas être dégouté ) :
    ou bien
    Argy

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    En effet je suis un peu dégouter, ca fait presque 3h que je suis bloquer sur cette merde.

    merci pour ta réponse si rapide

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Tout d'abord, ce que tu as défini, n'est pas une fonction. Une fonction se définit comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public/Private Function MaFonction() AS String/Boolean/Long etc...
    ...
    MaFonction = ...
    ...
    End Function
    Une fonction est donc faite pour retourner une valeur alors qu'un "Sub" n'est fait que pour exécuter des instructions.

    Dans ton cas, si tu nous donnais la ligne sur laquelle il coince lors de la compilation, ça nous permettrait de t'aider plus efficacement...

    Si jamais, c'est lors de l'appel, as-tu essayé De plus, est-ce que le Sub que tu décris est dans le module d'où tu l'appelles ?
    Si non, il doit alors être dans un module indépendant pour que tu puisses l'appeler de n'importe où.

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

Discussions similaires

  1. Utilisation d'une même variable dans différents fonctions de Callback
    Par houjuventini dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/11/2007, 08h58
  2. appel d'une fonction dans la fonction pricipal
    Par phil23 dans le forum Débuter
    Réponses: 4
    Dernier message: 14/09/2007, 11h41
  3. Appeler une variable globale dans la fonction eval
    Par Romanops dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2007, 04h24
  4. passer une feuille excel dans un fonction
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/12/2006, 00h08
  5. Réponses: 5
    Dernier message: 09/07/2006, 18h14

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