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

Access Discussion :

Piloter excel à partir d'access


Sujet :

Access

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut Piloter excel à partir d'access
    Bonjour !
    Je pilote excel à partir d'access.
    Mon code fonctionne correctement lorsque je l'éxécute une première fois.
    Mais lorsque je ferme (manuellement) le fichier excel, et que je reclique sur le bouton Bt_Arch_Suivi, le fichier excel s'ouvre, créer une feuille,
    et le programme bugue sur la dernière ligne : "La méthode cells a échoué".

    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
     
    Private Sub Bt_Arch_Suivi_Click()
     
    Dim ChoixAn As Integer
    ChoixAn = Me.ListeAnS
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
     
      'Initialisations
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add("\\Ntserver\commun\Base\Archives\Archive_Suivis.xls")
     
        xlApp.Visible = True
     
        'Ajouter une feuille de calcul ( une pour chaque année )
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = " " & ChoixAn & " "
     
        Cells(1, 1).Select
    Je ne comprends pas ...
    Et surtout je ne vois pas comment je pourrais faire.

    Merci d'avance à ceux qui pourront me conseiller !

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    salut,

    c'est pas une commande access, il faut que tu précises le classeur concerné.

    sinon tu libères tes objets à la fin de la fonction?

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    Salut !

    Meme si je me positionne sur la feuille, ca ne change rien

    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
    Dim ChoixAn As Integer
    ChoixAn = Me.ListeAnS
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
     
      'Initialisations
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add("\\Ntserver\commun\Base\Archives\Archive_Suivis.xls")
        xlApp.Visible = True
     
        'Ajouter une feuille de calcul ( une pour chaque année )
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = " " & ChoixAn & " "
     
        'se positionner sur la feuille
        xlApp.Sheets(" " & ChoixAn & " ").Select
     
        Cells(1, 1).Select
    Je ne libère pas les objets à la fin, car lorsque je mets =nothing ca marche pas

    Ou alors comment on fait pour les libérer ?

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    t'as pas compris ce que je disais je crois...

    c'est pas :
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp.activesheet.Cells(1, 1).Select
    (enfin je pense de mémoire)
    Tu ne peux pas faire appel à la méthode Cells sans préciser à quelle feuille tu réfères; c'est peut-être pas ça qui va empêcher excel de se fermer mais je doute que la sélection de la cellule fonctionne comme ça.

    Sinon pour libérer excel c'est :

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    xlApp.ActiveSheet.Cells(1, 1).Select
    'Cells(1, 1).Select
    With ActiveCell
            .Value = "Num du suivi"
            With .Font
                 .Bold = True
                 .Color = RGB(153, 0, 0)
                 .Italic = True
                 .Name = "Comic sans MS"
                 .Size = 10
                 .Underline = xlUnderlineStyleDouble
            End With
        End With
    Merci pour ta réponse.

    Mais maintenant ca plante sur
    .value = "..."

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    argh!

    c'est la même chose, <activecell> est un objet excel, tu dois lui dire de quelle feuille!

    d'ailleur quand tu fais de l'automation ne passe par des activecell ou activesheet, utilise directement les objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With xlSheet .Cells(1, 1)
      .Value = ....
    J'imagine que tu as enregistré une macro sous excel, c'est pour ça que tu utilises les objets activesheet et activecell?
    Mais ici en VBA ça ne sert à rien d'activer les objets.

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    d'ailleur quand tu fais de l'automation ne passe par des activecell ou activesheet, utilise directement les objets :
    Tu as raison, je te remercie.

    En fait je passais par activecell car j'ai fait un copier coller d'un code que j'ai trouvé sur le net.

    J'ai pas l'habitude de travailler avec excel.

    Merci beaucoup!

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

Discussions similaires

  1. Lancement d'un fichier Excel à partir d'Access
    Par Golork dans le forum Access
    Réponses: 5
    Dernier message: 18/03/2010, 11h45
  2. Exécution Macro Excel à partir d'Access
    Par SylvainJ dans le forum Access
    Réponses: 1
    Dernier message: 11/08/2006, 14h58
  3. insérer une nouvelle feuille Excel à partir d' Access
    Par Sebastien_INR59 dans le forum Access
    Réponses: 2
    Dernier message: 06/08/2006, 18h47
  4. Lancement macro excel à partir d'access
    Par frevale dans le forum Access
    Réponses: 3
    Dernier message: 11/04/2006, 13h11
  5. Réponses: 1
    Dernier message: 09/12/2005, 19h12

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