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 :

Projet VBA: Panne Catastrophique (Catastrophic failure)


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut Projet VBA: Panne Catastrophique (Catastrophic failure)
    Bonjour à tous,
    Il parrait que mon projet VBA connait un probléme qui m'affiche un message qui fait bien peur:
    System Error &H8000FFFF (-2147418113). Catastrophic Failure

    Cela se produit à l'ouverture du classeur Excel, c'est un classeur XLS sous Excel 2003 sous XP.

    Panne Catastrophique !
    ça ne fais pas peur ça?

    Peut-on savoir l'origine de cette panne?

    Merci de votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    La macro doit essayer de faire quelque chose d'interdit par le système.
    Pour débugger le projet VBA, reconfigure Excel pour ne pas lancer les macros automatiquement au démarrage.
    Puis essaye de ré-ouvrir le fichier. Si ça fonctionne, déplace temporairement le code qui s'exécute à l'ouverture du classeur dans un module.
    En ré-ouvrant le classeur sans exécution à l'ouverture du classeur, tu dois pouvoir faire du pas à pas sur le bout de code déplacé afin de déterminer d'où vient le problème.

    A+

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En complément de la réponse de BlueMonkey que je salue au passage.
    Un truc pour déboguer facilement une procédure au pas à pas est de placer l'instruction Stop juste avant les lignes à contrôler.
    Exemple avec la procédure événementielle Workbook_Open
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
     Stop
     Dim sht As Worksheet
     For Each sht In ThisWorkbook.Worksheets
      Debug.Print sht.Name
     Next
    End Sub
    A l'ouverture du classeur le code va s'interrompre à la ligne où se trouve l'instruction Stop et il suffit ensuite de faire du Pas à Pas à l'aide de la touche F8

  4. #4
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut Projet VBA: Panne Catastrophique (Catastrophic failure)
    Merci Messieurs, pour votre aide,
    Permettez moi de vous donner la totalité du code qui s'exécute sous l'événement Selection_Change de la feuille et de rajouter quelques remarques à propos de cette panne que je devais certainement préciser au par avant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range
    If ActiveCell.Column = 6 And ActiveCell.Offset(0, 2).Value = "" Then
    ActiveCell.Offset(0, -1).Value = UCase(ActiveCell.Offset(0, -1))
        For Each rng In Columns(5).Cells
            If rng.Value = ActiveCell.Offset(0, -1).Value And rng.Row <> ActiveCell.Row And ActiveCell.Offset(0, -1).Value <> "" Then
             MsgBox ActiveCell.Offset(0, -1).Value & " has already been entered in " & rng.Offset(0, 10).Value & " Room Nº " & rng.Offset(0, 11).Value & ".", vbExclamation
             ActiveCell.Offset(0, -1).ClearContents
            End If
        Next
    End If
    End Sub
    Comme vous le voyez, rien de plus simple.

    Je tiens à vous préciser que cette panne ne se manifeste que dans certaines machines, sans les autres, (Même Version d'Excel et même systéme d'exploitation), et je ne fais appel à aucune Macro Complémentaire (AddIn) ou autre référence.
    Merci Encore une fois.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans avoir regardé ce que fait ton code, quelle est la raison qui te pousse a utiliser ActiveCell en lieu et place de Target ?

  6. #6
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut Projet VBA: Panne Catastrophique (Catastrophic failure)
    quelle est la raison qui te pousse a utiliser ActiveCell en lieu et place de Target ?
    Pardon Phillippe,
    C'est juste une de ces mauvaises habitudes que j'ai en programmation .

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai changé ActiveCell par Target dans mon explication
    Il est curieux ce code, il parcourt toutes les cellules de la colonne 5 de cette feuille alors que peut-être son maximum de lignes remplies est de 1000 (cela signifie que si tu as Excel 2010, tu vas vérifier plus d'un million de cellules) et en 2003, 65536 lignes.
    En plus, à ta place, j'ajouterais un Exit For à la ligne 8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(0, -1).ClearContents: Exit For
    Parce-qu'après avoir effacé la cellule que tu compares, il y a peu de chance de rencontrer encore une cellule qui réponde aux conditions.
    J'ajouterais encore mais c'est peut-être voulu que tu transformes en majuscule la cellule de la colonne 5 de la ligne où a eu lieu la sélection et que tu compares donc cette cellule avec les autres cellules de la colonne 5 donc d'après ton test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rng.Value = Target.Offset(0, -1).Value And rng.Row <> Target.Row And Target.Offset(0, -1).Value <> "" Then
    si une cellule est identique mais de casse différente elle ne sera pas prise en compte comme étant identique.
    [EDIT]
    Pour éviter un message d'erreur en cas de sélection de plusieurs cellules, j'ajouterais en début de procédure la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Count > 1 Then Exit Sub

  8. #8
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut Projet VBA: Panne Catastrophique (Catastrophic failure
    Quant à la casse c'est la raison pour laquelle je force Excel à la capitalisation des lettres,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(0, -1).Value = UCase(Target.Offset(0, -1))
    C'est aprés ça qu'Excel devrait faire la comparaison.

    Et quant au champ d'action qui est la colonne entiére je viens de nommer une plage de cellules appelée "Pax_IN" et je remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each rng In Columns(5).Cells
    Par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        For Each rng In Range("Pax_IN").Cells

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si j'ai bien compris, c'est après avoir entré la valeur dans une des cellules de la colonne E que tu interceptes la sélection par la procédure événementielle Worksheet_SelectionChange (encore faut-il que l'option Déplacer la sélection après validation soit vers la droite).
    Si c'est le cas, il serait préférable d'utiliser la procédure événementielle Worksheet_Change qui est plus appropriée à ce que tu cherches à faire. Ainsi la procédure ne s'enclencherait uniquement dans le cas où l'on modifie une cellule.

    Est-ce que cela ne nous éloigne pas de ta question initiale ?
    Cela se produit à l'ouverture du classeur Excel, c'est un classeur XLS sous Excel 2003 sous XP.

  10. #10
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut
    Pour être plus précis ce n'est pas exactement à l'ouverture du classeur que celà se produit, mais plutôt au premier mouvement du cusrseur dans le classeur.
    Je viens de trouver une réponse pour un problême similaire dans le lien suivant (Réponse Nº9): http://social.technet.microsoft.com/...rophic-failure
    et ça dit que le projet VBA serait corrompu et que je vais devoir tout transférer vers un nouveau fichier Excel.

Discussions similaires

  1. [VB6]protection projet vba
    Par nils.angot dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/07/2006, 15h38
  2. [Excel]Projet VBA protégé, comment déprotéger ?
    Par tonf dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/06/2006, 19h05
  3. "Nettoyer" Un PROJET VBA ??
    Par samlepiratepaddy dans le forum Access
    Réponses: 4
    Dernier message: 30/10/2005, 17h58
  4. Migrer un projet VBA Excel vers VB
    Par Phoon0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2005, 11h09
  5. [objets COM] "Catastrophic failure"
    Par Air'V dans le forum ASP
    Réponses: 5
    Dernier message: 10/09/2003, 11h45

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