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 :

[VBA-Excel] Erreur automation


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut [VBA-Excel] Erreur automation
    Bonjour à tous,

    J'ai un programme VBA (à partir de BusinessObjects) qui ouvre un fichier excel, fait des traitements sur les cellules (juste de la présentation) et je le referme.
    Mon pb est lorsque je referme l'application, il m'affiche une erreur d'execution du type '1'. Erreur automation. Le serveur a généré une exception.
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Sub Export_Excel()
        Dim xlFicName As String
     
        Application.Interactive = False
     
        ' Sauvegarde en XLS
        xlFicName = ThisDocument.Path + "\" + ThisDocument.Name + ".xls"
        ThisDocument.SaveAs xlFicName
     
        ' Ouverture fichier
        Set xlapp = New Excel.Application
        xlapp.Workbooks.Open xlFicName
     
        ' Formatage des restitutions
        xlapp.Sheets(1).Select
        RotationTexte 1, 6, 180
        'FormatCentreDroit 1, "B11:F11"
        GroupementVertical 1, 6
        RéduireTailleTableau 1
        ElargirColones 1, "A:AF", 5
        xlapp.Windows(1).DisplayGridlines = False
     
        ' Formatage des restitutions
        xlapp.Sheets(2).Select
        RotationTexte 2, 8, 180
        'FormatCentreDroit 1, "B11:F11"
        GroupementVertical 2, 8
        RéduireTailleTableau 2
        ElargirColones 2, "A:AF", 5
        xlapp.Windows(1).DisplayGridlines = False
     
        xlapp.ActiveWorkbook.Save
        xlapp.Visible = True
     
        xlapp.ActiveWorkbook.Close
        xlapp.Quit
        Set xlapp = Nothing
     
    End Sub
    L'erreur se trouve au niveau de la ligne : xlapp.ActiveWorkbook.Close
    Merci pour votre aide.


  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    evite d'utiliser les active...workbook ou autre..


    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
     
    dim wk as workbook
    set wk =  xlapp.Workbooks.Open xlFicName
     
    ' Remplace ensuite tes activeWorbook par wk
    '
    '
    ..
    ''  xlapp.ActiveWorkbook.Save 
    'deviens :
    wk.save 
     
    ...
     
     
    'pour finir 
    set  wk =nothing

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    cela ne fonctionne pas,
    lorsque j'execute, une erreur se produit sur "Set wk = xlapp.Workbooks.Open(xlFicName)". il me dit incompatibilité de type.
    une idée ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello,
    Tu dis "Mon pb est lorsque je referme l'application, il m'affiche une erreur d'execution du type '1'. Erreur automation."
    Ton erreur est-elle au moment de la fermeture ou de l'enregistrement ?

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    PS - Si c'est à la fermeture, ajoute un "DoEvents" entre l'enregistrement et ta ligne "...Close..."

  6. #6
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    bbil, j'ai le même pb avec ta solution...
    ouskel'n'or, j'ai une pb lors de la fermeture du fichier Excel.
    Quel "doevent" doisje rajouter ? je ne comprend pas bien...
    Merci

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        xlapp.ActiveWorkbook.Save
        xlapp.Visible = True
        DoEvents 'Regarde dans l'aide à quoi ça sert 
        xlapp.ActiveWorkbook.Close
        xlapp.Quit
        Set xlapp = Nothing

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    desolé j'ai glissé sur le clavier un s de trop :

    il faut lire (je vais corriger mon précédent post)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    dim wk as workbook

  9. #9
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    oui j'avais vu pour le "s"

    Voici ce que j'ai rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    xlapp.ActiveWorkbook.Save
     
        xlapp.Visible = True
        MsgBox DoEvents
        xlapp.ActiveWorkbook.Close
        xlapp.Quit
        Set xlapp = Nothing
    Le msgbox m'affiche "0", ce n'est pas normal, n'est ce pas ?

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et ils sont ou les wk ?

  11. #11
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    je les ai enlever, vu que j'avais le meme pb .....

  12. #12
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    en rajoutant les "wk", j'ai la meme erreur automation
    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
     
    Sub Export_Excel()
        Dim xlFicName As String
        Dim wk As Workbook
     
        Application.Interactive = False
     
        ' Sauvegarde en XLS
        xlFicName = ThisDocument.Path + "\" + ThisDocument.Name + ".xls"
        ThisDocument.SaveAs xlFicName
     
        ' Ouverture fichier
        Set xlapp = New Excel.Application
        Set wk = xlapp.Workbooks.Open(xlFicName)
     
        ' Formatage des restitutions
        xlapp.Sheets(1).Select
        RotationTexte 1, 6, 180
        GroupementVertical 1, 6
        RéduireTailleTableau 1
        ElargirColones 1, "A:AF", 5
        xlapp.Windows(1).DisplayGridlines = False
     
        ' Formatage des restitutions
        xlapp.Sheets(2).Select
        RotationTexte 2, 8, 180
        GroupementVertical 2, 8
        RéduireTailleTableau 2
        ElargirColones 2, "A:AF", 5
        xlapp.Windows(1).DisplayGridlines = False
     
        wk.Save
     
        xlapp.Visible = True
        MsgBox DoEvents
        wk.Close
        xlapp.Quit
        Set xlapp = Nothing
        Set wk = Nothing
     
    End Sub
    j'ai tjs 0 lors du msg, et l'erreur lors de la cloture.


  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Où as-tu vu que j'avais mis "msgbox DoEvents"
    Tiens, pendant que tu y es, mets en un aussi entre "Close" et "quit"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        xlapp.Visible = True
        DoEvents
        wk.Close
        DoEvents
        xlapp.Quit
        Set xlapp = Nothing
        Set wk = Nothing
    Et regarde l'aide à DoEvents
    Tu dis

  14. #14
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    je voulais juste voir ce que retournait la fonction.
    Meme en mettant cette fonction 'doevents' avant le close et le quit, ca bug..
    D'ailleurs, il ne passe pas au deuxieme 'doevents' car il bug au close.

    Pourquoi il ne veut pas fermer ? c bizzare, non ?

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Comme je ne vois pas essaie de déplacer la ligne
    xlapp.Visible = True
    en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        xlapp.ActiveWorkbook.Save    
        DoEvents
        xlapp.ActiveWorkbook.Close
        xlapp.Visible = True
        DoEvents
        xlapp.Quit
        Set xlapp = Nothing
    Mon raisonnement ? Tu traites "l'application" avant de tenter la fermeture du fichier. Est-on sûr que le fichier soit "actif" quand tu veux le fermer ?

    A défaut d'une autre proposition, essayer celle-ci ne coûte rien...
    Désolé, je n'ai rien de mieux.

  16. #16
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    non cela ne fonctionne pas non plus....
    est ce qie le pb pourait venir d'ailleurs ? Genre fichier corrompu ou autres ?
    merci


  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par argv666
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        ' Sauvegarde en XLS
        xlFicName = ThisDocument.Path + "\" + ThisDocument.Name + ".xls"
        ThisDocument.SaveAs xlFicName
     
        ' Ouverture fichier
        Set xlapp = New Excel.Application
        Set wk = xlapp.Workbooks.Open(xlFicName)
    Ce qui me tracasse, c'est que tu sauves un fichier (dans un autre format que l'origine), puis que tu rouvres le même fichier (dans une nouvelle instance d'Excel).
    Pourquoi fais-tu une nouvelle ouverture de ce fichier qui est déjà présent en mémoire?

  18. #18
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    En fait, je travaille sur BusinessObjects et le VBA.
    J'enregistre le fichier BO en version Excel.
    Puis je recupere ce fichier pour traitements. Ces traitements sont juste des traitements de presentation.
    Donc ma "source" n'est pas un fichier excel mais BO
    Voila pq ....

  19. #19
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ta réponse n'enlève rien à ma question.

    Pourquoi rouvir ce qui est déjà ouvert?

  20. #20
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    Lorsque j'enregistre sous Excel mon fichier BO, Excel n'est pas "ouvert".
    J'ai regardé dans le gestionnaire des taches, et Excel n'y est pas.
    Donc j'ouvre une appli du type Excel par la suite
    voila pq....

Discussions similaires

  1. [VBA-E]Erreur automation
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2006, 09h22
  2. [VBA-E] Erreur automation
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 07/04/2006, 15h02
  3. [VBA-E]Erreur Automation en faisant du multicasting
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2006, 13h29
  4. [VBA][EXCEL] Erreur génération d'un graphique
    Par PoZZyX dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/01/2006, 15h52
  5. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50

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