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

Macros et VBA Excel Discussion :

indices WorkSheet vba Access 2010


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut indices WorkSheet vba Access 2010
    Bonjour à tous et à toutes,
    Voilà je dois maintenir une base Access 2010 avec des accès fichiers excel, avec le code suivant dans un module :
    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
    
    Public Sub EcrireTableur(onglet)
        Dim xlApp As Excel.Application
        Dim oWkb As Excel.Workbook
        Dim oWSht As Excel.Worksheet
        Dim fDlg As Office.FileDialog, strFichier As String
        Dim oRst As DAO.Recordset
        
            
        ' Créer un objet Excel' (ce qui équivaut à démarrer Excel à distance)
        Set xlApp = CreateObject("Excel.Application")
        
        cSQL = "select distinct UG, NB from [TAB_COUNT_UG];"
        Set oRst = CurrentDb.OpenRecordset(cSQL)
     
        With xlApp
     
            Set oWkb = xlApp.Workbooks.Open(DLookup("[CHEMIN_ROULEMENT]", "TAB_PARAMETRE") & DLookup("[NOM_FICHIER_ROULEMENT]", "TAB_PARAMETRE"))
            MsgBox ActiveSheet.Index
            MsgBox ActiveSheet.Name
            Set oWSht = oWkb.Worksheets(onglet)
    Cette procedure est appelé depuis du code vba sur un formulaire Access, le problème que j'ai est que l'indice de l'onglet est faux par moment et plutot souvent faux que bon; il me renvoit pas le bon et des fois meme le nom de l'onglet "ActiveSheet.Index" et "ActiveSheet.Name", il me renvoit aussi comme nom "Sheet(0)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Commande8_Click()
    .....
     
    EcrireTableur ("Nom_Onglet")
    ........
    Si quelqu'un peut m'aider merci

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    quelques remarques:

    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
    Public Sub EcrireTableur(onglet)
        Dim xlApp As Excel.Application
        Dim oWkb As Excel.Workbook
        Dim oWSht As Excel.Worksheet
        Dim fDlg As Office.FileDialog, strFichier As String
        Dim oRst As DAO.Recordset
     
     
        ' Créer un objet Excel' (ce qui équivaut à démarrer Excel à distance)
        Set xlApp = CreateObject("Excel.Application")
     
        cSQL = "select distinct UG, NB from [TAB_COUNT_UG];"
        Set oRst = CurrentDb.OpenRecordset(cSQL)
     
        With xlApp
     
            Set oWkb = xlApp.Workbooks.Open(DLookup("[CHEMIN_ROULEMENT]", "TAB_PARAMETRE") & DLookup("[NOM_FICHIER_ROULEMENT]", "TAB_PARAMETRE"))
            ' ici, le ActiveSheet ne correspond à rien!!!!!!!!!!!
            MsgBox ActiveSheet.Index
            MsgBox ActiveSheet.Name
     
     
            Set oWSht = oWkb.Worksheets(onglet)
            ' là, c pas mieux?
            MsgBox oWSht.Index
            MsgBox oWSht.Name
        End With
     
        ' attention à bien faire...
        xlApp.Quit
        ' et...
        Set xlApp = Nothing
        ' pour pas avoir des références fantômes!
     
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut Solution
    Finalement j'ai trouvé une solution : déclarer une variable publique : ind_onglet dans le module et affecter la valeur de l'indice de l'onglet en sortie du formulaire et ensuite dans le module utiliser la valeur de cette variable pour aller sur cet onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set oWSht = oWkb.Worksheets(ind_onglet)
    (Excel.Worksheet)

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

Discussions similaires

  1. Créer un fichier Word en VBA Access 2010
    Par unlucky luke dans le forum VBA Access
    Réponses: 5
    Dernier message: 12/03/2014, 11h49
  2. Curiosité VBA Access 2010/2003 incompréhensible
    Par sellig60 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/06/2012, 20h24
  3. Réponses: 1
    Dernier message: 27/07/2011, 13h41

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