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 :

Excel :erreur curieuse


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut Excel :erreur curieuse
    Bonjour,
    j'ai programmé ceci à partir de Microsoft Visual Basic 6.0:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim CATIA As Object
    Set CATIA = GetObject(, "CATIA.Application")
    Dim appExcel As Excel.Application
    Set appExcel = CreateObject("Excel.Application")
    Dim wbExcel As Workbook
    Set wbExcel = appExcel.Workbooks.Open(CATIA.ActiveDocument.Path & "\NomenclatureCatia.xls")
    Dim wsExcel As Worksheet
    Set wsExcel = wbExcel.Worksheets(1)
    ...
    wsExcel.Range("A5").Select
    Lors de la compilation, tout se passe bien. Quand je lance le programme à partir de l'exécutable, au bout d'un moment windows me dit qu'Excel a rencontré un problème et doit fermer.
    La seule erreur que j'ai eu en débogant mon programme se produit quand le compilateur arrive à la ligne wsExcel.Range("A5").Select alors que wsExcel contient effectivement une feuille. Là je ne comprends pas, surtout que lorsque l'erreur se produit, un appui sur F5 résoud le problème. Comme je voulais voir ce que faisait le programme je n'est pas mis la ligne appExcel.Visible = False. Pensez-vous que ça vienne de là? Pensez-vous que l'instruction On error resume next pourrait résoudre le problème?

    D'autre part, comment se fait-il que lorsqu'on pilote une application en plus d'Excel depuis Visual Basic (en l'occurence Catia), on soit obligé de rajouter le qualificateur appExcel devant l'instruction "ActiveCell" pour que le compilateur ne renvoie pas d'erreur alors que si Excel est la seule application pilotée ça fonctionne et que l'instruction "ActiveCell" n'est pas un objet existant dans Catia?
    Merci.

  2. #2
    Expert éminent


    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
    Par défaut
    il nous manque des éléments pour répondre... mais déjà ..ce que l'on peu dire c'est que dans la plus part des cas tu peu te passer des ActiveCell, Select ... activeSheet.. et que s'en passer permet souvent d'éviter des petits problémes..

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Merci pour cette réponse bbil. Je vais enlever les select qui restent dans le source de mon programme. C'est dommage celui que tu voyais me servait à trouver la dernière cellule non vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wsExcel.Range("A5").Select
    appExcel.Selection.End(xlDown).Select
    dL = appExcel.ActiveCell.Row
    Toi tu suggère plutôt d'incrémenter un entier représentant la ligne de la cellule et de tester la valeur de la cellule? A+

  4. #4
    Expert éminent


    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
    Par défaut
    Citation Envoyé par spileo
    Merci pour cette réponse bbil. Je vais enlever les select qui restent dans le source de mon programme. C'est dommage celui que tu voyais me servait à trouver la dernière cellule non vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wsExcel.Range("A5").Select
    appExcel.Selection.End(xlDown).Select
    dL = appExcel.ActiveCell.Row
    Toi tu suggère plutôt d'incrémenter un entier représentant la ligne de la cellule et de tester la valeur de la cellule? A+
    non plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dL = wsExcel.Range("A5").End(xlDown).Row

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Merci bbil!
    Bon en fait j'ai enlevé tous les select et tous les activesheet et autres que j'ai pu trouver et j'ai réécris le code plus proprement, en utilisant ça notamment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dL = wsExcel.Range("A5").End(xlDown).Row
    Effectivement ça se passe nettement mieux.
    En fait je les avais mis parce que je n'ai pas écrit mon programme en un jour. Je l'ai découpé en plusieurs projets (qui ne contenaient pratiquement pas de activesheet...) puis j'ai fait du copier coller de code pour tout rassembler dans un module et dans une form. C'est quand j'ai tout rassemblé que ça a commencé à planter, les select ne fonctionnaient plus... Alors j'ai mis les activesheet pour faire fonctionner les select et là ça s'est remis à fonctionner mais que sur mon pc.
    Bref la partie principale du programme fonctionne mais il y a aussi une sous fonction qui sert à faire de la mise en page et là le select ça ne marche pas.
    Je vais voir s'il n'y a pas un moyen d'éviter d'écrire ce genre de truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    wsExceliFe.Cells(LSTotal, 1).Select
    With appExcel.Selection.Font
     .Name = "Arial"
     .FontStyle = "Normal"
     .Size = 14
     .Strikethrough = False
     .Superscript = False
     .Subscript = False
     .OutlineFont = False
     .Shadow = False
     .Underline = xlUnderlineStyleNone
     .ColorIndex = xlAutomatic
    End With
    Merci encore. à+

  6. #6
    Expert éminent


    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
    Par défaut
    même principe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    With wsExceliFe.Cells(LSTotal, 1).Font
     .Name = "Arial"
    ...

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

Discussions similaires

  1. [XML][Excel] Erreur d'ouverture
    Par Promesses dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 03/11/2010, 14h13
  2. [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
  3. [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
  4. [Excel] Erreur 1004 avec un search
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 13h54
  5. [OLE Excel] Erreur
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 23/03/2003, 18h28

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