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 :

Lecture de tables access et écriture dans excel


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Lecture de tables access et écriture dans excel
    Bonjour,


    j'essai sous Access 2010, de lire des tables pour les Ecrire sous excel 2003 (plusieurs onglet de data pour mettre a jour des tableaux dynamiques) . La fonction d'écriture marche très bien mais ma fonction de mise à jour des tableaux se plante une fois sur deux ( et marche une fois sur deux ) . J'ai un code erreur 462 :" Le serveur distant n'existe pas ou n'est pas disponible"

    Si vous pouvez m'aider, je ne trouve aucune solution : voici mon code :

    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
    Public Function maj_tdbd()
     
    Dim pvt As PivotTable
    Dim sh As Worksheet
     
     On Error GoTo ErrorHandler
     
    For Each sh In Worksheets
        If sh.PivotTables.Count >= 1 Then
            For Each pvt In sh.PivotTables
                pvt.RefreshTable
     
            Next pvt
     
        End If
    Next sh
     
     
     
    Exit Function
    ErrorHandler:
        Call gest_err("Mise à jour des TDB", "xls_liste_osg", Err.Number, Err.Description)
    End Function
    MERCI

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Peut-être qu'une partie du code est omise volontairement, mais voilà comment je procèderais :
    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
    Public Function maj_tdbd()
        On Error GoTo Err_maj_tdbd
        Dim xlApp As Excel.Application, xlBook As Excel.Workbook, xlSheet As Excel.Worksheet
        Dim pvt As PivotTable
     
        ' ===== Initialisation des variables =====
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = False
        Set xlBook = xlApp.Workbooks.Open("c:\toto.xls")
     
        For Each xlSheet In xlBook.Worksheets
            If xlSheet.PivotTables.Count >= 1 Then
                For Each pvt In xlSheet.PivotTables
                    pvt.RefreshTable
                Next pvt
            End If
        Next xlSheet
     
    Exit_maj_tdbd:
        xlBook.Save
        ' Libération des variables
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
        Exit Function
     
    Err_maj_tdbd:
        MsgBox "Error n°" & Err.Number & vbCrLf & "Description : " & Err.Description & vbCrLf & "Source : " & Err.Source, vbCritical, "Error"
        Resume Exit_maj_tdbd
    End Function
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    en fait j'ai un main qui lance trois fonctions : l'init (initialisation des variables) , l’écriture et la mise a jour des tableaux. Donc je pense être dans
    le même cas que ce que vous proposez ....

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Je ne suis pas un spécialiste des modules de classe en VBA. Mais, par expérience, je sais que l'automation a du mal à marcher si on ne libère pas correctement les variables. Donc c'est une piste à creuser éventuellement.
    Vérifies, notamment à chaque plantage de ta fonction, que tu n'as pas des instances Excel encore en mémoire dans le gestionnaire des tâches.

    EDIT : J'ai fait cette proposition de code car, dans le tien, la collection Worksheets est appelée mais on ne sait pas sur quel objet
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    MERCI beaucoup. En vous lisant je me suis aperçu que je mettais "In Worksheets" au lieu de "In xlBook.Worksheets". Cela semble tourner impeccable en le rajoutant.
    Un peu capricieux le monsieur ....

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bah non c'est normal, la collection Worksheets est une propriété des classes Excel.Application et Excel.Workbook...
    marques le sujet comme résolu si c'est le cas
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    c est résolu grace à vous. Mais pourquoi cela fonctionnait une fois sur deux , si j'avais eu l'erreur a chaque fois peut être que j'aurai trouvé ...
    encore merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/03/2011, 09h33
  2. Réponses: 2
    Dernier message: 11/03/2011, 18h06
  3. vbCrLf : écriture dans excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2007, 16h05
  4. Pb pour lier une table Access à un doc Excel
    Par Rcanada dans le forum Access
    Réponses: 5
    Dernier message: 24/04/2006, 14h48
  5. Table Access et Accents dans TDBGrid
    Par puzpuz_vannes dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/11/2003, 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