Fonction Workbooks.open arrête l'exécution sans code défaut

Bonjour à tous,

je viens vers vous car je me retrouve bloqué par une simple ouverture de fichier qui stop mon exécution.

la macro fonctionnement parfaitement en pas à pas mais pas en exécution direct.

le principe :

la macro appelle le gestionnaire d'ouverture de fichier (filtré sur de html)

je contrôle si le gestionnaire a renvoyé une adresse ou si il a été fermé

dans le cas de renvoie du lien, j'ouvre le fichier via la fonction open

et je termine la macro.

cette macro est appelé par une macro principale qui gère toute l'exécution

il se trouve que j'ai tout essayé,

changer le type de fichier chargé,

supprimer cette macro pour l'intégrer en direct dans la macro principale,

mais rien y fait, elle plante a chaque fois

elle ouvre le fichier et arrête l’exécution.

je ne sais plus quoi faire et aucun forum remonte ce problème.

voici le code de la macro et celuit de la macro principale

Dim retour As Integer

Dim nbligne As Integer

Dim numzone As Integer

Dim numsemaine As Integer

Dim controle As Integer

Dim zone As String
Dim result As String
Dim result1 As String
Dim result2 As String
Dim saisie As String
Dim i As Integer

Option Explicit

Sub traitement_hebdomadaire()

    Static result0 As String

    On Error GoTo errorHandler

    If IsEmpty(result0) = False Then
        result0 = ActiveWorkbook.Name
        result1 = ActiveWorkbook.Name
    Else
     Windows(result0).Activate
    End If
    Sheets(1).Select
    retour = MsgBox("lancer le traitement hebdomadaire?", vbOKCancel, "Traitement hebdomadaire")
    If retour = 1 Then
        choix_periode_EMS
        If retour = 6 Then
boucle:
            choix_sauvegarde_EMS
            If retour = 1 Then
                ouverture_fichier_EMS 'ici c'est la fonction appelée'
                If retour = 1 Then
                    trie_sauvegarde
                    If retour = 10 Then GoTo manuel
                    retour = MsgBox("Continuer sur une autre zone?", vbYesNo, "Continuer")
                    If retour = 6 Then GoTo boucle
                Else
                    retour = MsgBox("lancement annulé", vbOKOnly, "Annulation")
                End If
            Else
                retour = MsgBox("Pas de zone seclectionnée", vbOKOnly, "Annulation")
            End If
        Else
            retour = MsgBox("Pas de semaine seclectionnée", vbOKOnly, "Annulation")
        End If
    Else
        retour = MsgBox("rapatriement annulé", vbOKOnly, "Annulation")
    End If
    If result2 <> "" Then
        Windows(result2).Close
    End If
manuel:
errorHandler:
            MsgBox Err.Number & vbLf & Err.Description

End Sub

Private Sub ouverture_fichier_EMS()
Dim wbExcel As Excel.Workbook 'Classeur Excel'
    result = (Application.GetOpenFilename("Web html(*.html),*.html"))
    If result = "Faux" Then

        retour = MsgBox("chargement fichier annulé", vbOKOnly, "Annulation")
    Else
       Workbooks.OpenText (result) 'ici c'est là où la fonction arrête l'exécution'
        result2 = ActiveWorkbook.Name
    End If
End Sub

avez-vous une idée sur une ingénierie que je ne respecterai pas bien ou autre...

Bonjour,

Il serait bien que tu mettes ton code sous balises Code, et que tu l'indentes s'il ne l'est pas...

Cordialement.

Bonjour MFerrand.

c'est fait. je ne connaissais pas cette fonction.

une idée sinon sur le pourquoi?

Bonjour,

Pour le moment aucune mais allons-y pas à pas...

Sub traitement_hebdomadaire()
    Static result0 As String
    On Error GoTo errorHandler
    If IsEmpty(result0) = False Then
        result0 = ActiveWorkbook.Name
        result1 = ActiveWorkbook.Name
    Else
        Windows(result0).Activate
    End If
    Sheets(1).Select
    retour = MsgBox("lancer le traitement hebdomadaire?", vbOKCancel, "Traitement hebdomadaire")
    If retour = vbOK Then
        choix_periode_EMS
        If retour = vbYes Then

Je reprends le début de ta procédure, et quelques éléments (que j'ai surligné) m'arrêtent...

En outre, je me demande pourquoi une variable statique (mais à voir plus tard...) et je n'aime pas travailler avec des Select et Activate, inutiles et qui peuvent brouiller les cartes, ni l'objet Window dès lors qu'il ne s'agit pas d'affichage...

Mais reprenons au début, la première condition un peu contournée aurait due (plus logiquement, et plus rapide à l'exécution) s'écrire:

    If Not IsEmpty(result0) Then

Elle pose divers problèmes ! D'abord IsEmpty est une fonction applicable à une variable de type Variant et est non pertinente pour les autres types de variables. Ensuite, tu lui affecterais une valeur si elle n'est pas vide, et tu l'utiliserais pour une activation si elle est vide ! Il y a peut-être là une erreur d'interprétation... ?

Lors du lancement de la macro, si elle est lancée par l'utilisateur, cela suppose que le classeur actif est le classeur qui contient la macro. Il serait plus clair dans ce cas d'utiliser ThisWorkbook plutôt que ActiveWorkbook...

J'ai remplacé les valeurs indiquées pour retour par les constantes vb, ce qui sera plus clair : si on a cliqué sur OK, on lance une procédure (absente, il serait bon de l'avoir !)

Suit immédiatement la condition visant à définir si on a cliqué sur Oui ! Or comme on n'avait le choix qu'entre OK et Annuler, il serait difficile d'avoir pu cliquer sur Oui !?

Dans ces quelques lignes, il y a déjà quantité de choses à élucider qu'il conviendrait d'élucider avant de poursuivre...

Bonjour à tous,

J'ai résolue le problème il y a un bon moment déjà.

le problème venait du fichier même que j'ai du recommencer et copier sons contenu.

ensuite tout est rentré dans l'ordre.

merci et bon courage à tous

Rechercher des sujets similaires à "fonction workbooks open arrete execution code defaut"