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 :

Bug Excel lors d'une tentative de modif de code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Bug Excel lors d'une tentative de modif de code VBA
    Bonjour,

    Navré de vous importuner mais je suis dans une impasse et je cherche un peu d'aide...

    Pour les besoins d'une petite application Excel, je dois effectuer des modifications sur certaines portions de code VBA.

    Lorsque je supprime des lignes dans le code associé aux feuilles, cela fonctionne. Lorsque j'ajoute du code, cela fonctionne toujours. En revanche, quelques secondes à peine après la mise à jour du code, une erreur fait planter Excel en force. Ceci se produit aussi en mode débogage : je passe bien l'instruction mais ensuite, passé deux ou trois secondes, Excel tombe en rideau.

    Il y a sans doute un vice de procédure dans mon bazar mais les multiples modifications que j'ai apportées n'ont rien changé...

    L'un d'entre vous aurait-il une explication ?

    Merci par avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenu sur le Forum de DVP

    Citation Envoyé par aerodynamique Voir le message
    L'un d'entre vous aurait-il une explication ?
    Sans un bout de code, Non !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    En effet, désolé d'avoir omis l'essentiel.
    Voici les deux instructions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With ActiveWorkbook.VBProject.VBComponents(iComponent).CodeModule
          'Fonctionne bien
          .DeleteLines 1, .CountOfLines
     
          'Provoque le plantage
          .InsertLines 1, sCode
    End With
    Voilà... je ne détaille pas le contenu de sCode, car il n'y a rien de particulier.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Soir Bon, qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        With ThisWorkbook.VBProject.VBComponents("ModuleA").CodeModule
            Debut = .ProcStartLine("MacroADetruire", vbext_pk_Proc)
            NbLignes = .ProcCountLines("MacroADetruire", vbext_pk_Proc)
            .deleteLines Debut, NbLignes
        End With
    Sinon voir http://silkyroad.developpez.com/VBA/VisualBasicEditor/

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    En complément de la réponse de Kiki29, l'utilisation de DeleteLines et InsertLines, dans une même instruction With, peut aussi être la source du plantage.


    bonne soirée
    michel

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonsoir,

    Merci pour ces réponses. J'ai consulté le tutorial et j'ai réalisé quelques adaptations de mon programme pour faire un code plus propre. J'ai aussi supprimé mon With.

    L'erreur subsiste toujours...
    Je poursuis mes recherche, merci pour votre aide

    Bonne soirée

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonsoir


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim iComponent As String, sCode As String
     
    iComponent = "Module1"
    sCode = "Sub laMacro()" & vbCrLf & _
            "Range(""A1"").Value = ""Coucou""" & vbCrLf & _
            "End Sub"
     
    With ActiveWorkbook.VBProject.VBComponents(iComponent).CodeModule
          .DeleteLines 1, .CountOfLines
    End With
     
    With ActiveWorkbook.VBProject.VBComponents(iComponent).CodeModule
          .InsertLines 1, sCode
    End With


    bonne soirée
    michel

  8. #8
    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 543
    Points
    15 543
    Par défaut
    Et pourquoi ne pas utiliser "ReplaceLine".
    Citation Envoyé par L'aide
    Remplace une ligne de code existante par une ligne de code spécifiée.
    As-tu vérifié le code après l'écriture de la ligne ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Faute de trouver la cause de problème j'ai au moins pu le corriger. J'ai fini par comprendre que toutes les instructions qui écrivaient des informations dans une des pages du classeur APRES le code de mise à jour des éléments VBA provoquaient le plantage d'Excel. En décalant ces éléments avant la mise à jour du code, tout fonctionne. Peut-être est-ce lié au fait que ces écritures sollicitaient sur les feuilles du code qui venait tout juste d'être ajouté.

    En tout cas merci pour votre aide

    @+

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

Discussions similaires

  1. [SP-2013] Erreur d'extraction lors d'une tentative de modification de page
    Par SpaceFrog dans le forum SharePoint
    Réponses: 5
    Dernier message: 04/12/2014, 13h12
  2. Problème lors d'une tentative d'IMPORT
    Par muchmorehuman dans le forum Oracle
    Réponses: 3
    Dernier message: 10/03/2009, 10h36
  3. [EJB3 Entity] Exception lors d'une tentative d'insertion
    Par Mister Nono dans le forum Java EE
    Réponses: 1
    Dernier message: 15/12/2008, 03h04
  4. Réponses: 3
    Dernier message: 14/02/2007, 10h37
  5. Bug bizare lors d'une requête à access
    Par Montaigne dans le forum C++
    Réponses: 1
    Dernier message: 26/10/2006, 13h54

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