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 :

Problème avec l'attribue Read-Only. Controle d'Excel depuis Access


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Problème avec l'attribue Read-Only. Controle d'Excel depuis Access
    Bonjour à tous !

    Cela va bientôt faire une semaine que je cherche une solution à mon problème de code et je ne sais plus quoi faire.
    Avant de commencer, je tiens à préciser que je ne suis vraiment pas un pro du VBA. J'apprends sur le tas et mon code est souvent très mal conçu.

    Voilà ce j'essaie de faire.
    -Mon code est lancé dans Access: j'envoie le contenu de 2 tables dans des recordsets
    -Ensuite, j'ouvre un fichier Excel et je vérifie si les feuilles nommées ''Feuille1'' et ''Feuille2'' existent. Si elles n'existent pas, je crée ces feuilles, mais si elles existent, je les supprime et je les re-crée
    -Pour finir, j'envoie les contenu des mes recordsets dans ces 2 feuilles Excel avec l'en-tête.

    Problème: le code semble fonctionner. Mais...le fichier Excel s'ouvre en Read-Only et je ne comprends pas pourquoi. Je veux un fichier tout simple Read-Write.

    J'ai cherché partout sur internet et j'ai bidouillé mon code une bonne centaine de fois. Mais rien y fait. Je suis vraiment un mauvais codeur et j'apprends très lentement.

    Pourriez-vous me dire ce qui ne va pas avec mon code ? Pourquoi Excel ouvre systématiquement une instance Read-Only ?

    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
    Private Sub ExportData()
    'Declarations
    Dim db As DAO.Database
    Dim rst1 As DAO.Recordset
    Dim rst2 As DAO.Recordset
     
    Dim XLapp As New Excel.Application
    Dim XLBook As Excel.Workbook
    Dim XLSheet As Object
    Dim XLSheet_2 As Object
     
    'J'envoie le contenu de mes tables dans des recordsets
    Set db = CurrentDb
    Set rst1 = db.OpenRecordset("SELECT * FROM [Table1]")
    Set rst2 = db.OpenRecordset("SELECT * FROM [Table2]")
    Set XLBook = XLapp.Workbooks.Open("C:\DATA\161381\Report Automation\Xstrata_Dinoob\Xstrata_Dinoob.xlsm")
     
     
     
    'Si les tables existent déja dans le fichier Excel, je les supprime et j'en créée des nouvelles
    'Si les tables n'existent pas, j'en créée des nouvelles	
     
    'La première table
    If XLSheet Is Nothing Then
        Set XLSheet = XLBook.Worksheets.Add
        XLSheet.Name = "Feuille1"
    Else: XLBook.Worksheets("Feuille1").Delete
        Set XLSheet = XLBook.Worksheets.Add
        XLSheet.Name = "Feuille1"
    End If
     
    Dim col As Integer
     
    XLSheet.Select
    XLSheet.Range("A:A").EntireRow.Delete
     
    For col = 0 To rst1.Fields.Count - 1
            XLSheet.Cells(1, col + 1) = rst1.Fields(col).Name
        Next col
    XLSheet.Range("A2").CopyFromRecordset rst1
     
     
     
    'La deuxième table	
    If XLSheet_2 Is Nothing Then
        Set XLSheet_2 = XLBook.Sheets.Add
        XLSheet_2.Name = "Feuille2"
    Else: XLSheet_2.Delete
        Set XLSheet_2 = XLBook.Sheets.Add
        XLSheet_2.Name = "Feuille2"
    End If
     
    Dim col_1 As Integer
     
    XLSheet_2.Select
    XLSheet_2.Range("A:A").EntireRow.Delete
     
    For col_1 = 0 To rst2.Fields.Count - 1
            XLSheet_2.Cells(1, col_1 + 1) = rst2.Fields(col_1).Name
        Next col_1
    XLSheet_2.Range("A2").CopyFromRecordset rst2
     
     
    XLapp.Visible = True
    XLBook.Windows(1).Visible = True
     
    rst1.Close
    rst2.Close
    Set rst1 = Nothing
    Set rst2 = Nothing
    Set XLapp = Nothing
    Set XLBook = Nothing
    Set XLSheet = Nothing
    Set XLSheet_2 = Nothing
     
     
    End
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'ai vu du code bien pire. À vrai dire je le trouve très correct.

    Peux-tu préciser quelle version de Access tu utilises ?

    Si tu ouvres le fichier Excel avec Excel est-il ne lecture seule ?

    Est-il avec une alerte comme quoi il y a des macros et il te demande l'autorisation de les exécuter ?

    Si oui à la dernière question, vérifie si tu as bien défini C:\DATA\161381\Report Automation\Xstrata_Dinoob\ comme étant un emplacement autorisé afin qu'Excel ne te pose plus la question à l'ouverture.

    Au fait tu pourrais peut-être utiliser les fonctions DoCmd.Transfert... qui permettent d'exporter des données Access vers un Excel sans tout faire à la main.

    A+

Discussions similaires

  1. [XL-2007] Problème avec le module microsoft communication controle
    Par Archershiro dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/05/2013, 14h42
  2. [Débutant] Problème de classe /Propriété Read only
    Par PaulP dans le forum C#
    Réponses: 3
    Dernier message: 28/03/2013, 15h29
  3. Problème avec la fonction READ
    Par chiheb1111111 dans le forum VHDL
    Réponses: 2
    Dernier message: 14/09/2011, 21h25
  4. Problème avec les évènement de mes controle
    Par napegadie dans le forum VB.NET
    Réponses: 5
    Dernier message: 17/08/2007, 12h41
  5. Problème avec la fonction read.
    Par Whaouu dans le forum Langage
    Réponses: 10
    Dernier message: 23/09/2005, 10h33

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