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 - Arret non demandée en exécution


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut VBA - Arret non demandée en exécution
    Bonjour,

    Je suis en train d'effectuer une macro VBA sous Excel.
    Lorsque j'exécute la macro, le debuggueur se lance et s'arrete sur une ligne du code. Je n'ai mis aucun break point. Il n'y a pas d'erreur. Je suis obligé de faire F5 à nouveau pour que le programme continue son exécution.

    Quelle peut etre la cause du probleme ?

    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Bah a priori ça serait ton code, montre le nous et dis nous sur quelle ligne il s'arrete..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Merci de ta réponse. Voila mon code :

    L'arret sur le code se trouve sur la ligne >>>>
    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
    
    '-------------------------------------------------------------
    Public Sub Corr_RBase(sReportingFile As String)
    '-------------------------------------------------------------
    ' Correction des données sur l'onglet R_Base_Activité du
    ' Reporting2007 passé en parametre
    ' En effet des données résiduelles y figurent et il s'agit de les
    ' effacer.
    '-------------------------------------------------------------
    Dim wbReporting As New Workbook
    Dim i As Integer
    
        ' *** Ouverture du Reporting
    >>>>    Workbooks.Open Filename:=sReportingFile, WriteResPassword:="20", Password:="20"
        Set wbReporting = ActiveWorkbook
        
        ' *** Sélection de la feuille désirée
        wbReporting.Sheets("R_Base").Visible = True
        wbReporting.Sheets("R_Base").Select
        ' *** Effacement des valeurs 
        Range("E502:J550") = ""
        For i = 994 To 1005
            If Range("J" & Format(i)) = "AIX" Then
                Range("E" & Format(i) & ":J" & Format(i)) = ""
            End If
        Next i
        ' *** On re-cache la feuille
        wbReporting.Sheets("R_Base").Visible = False
        
        ' *** Fermeture du fichier avec sauvegarde
        wbReporting.Close Savechanges:=True
    
    End Sub
    Cette procédure est appelée par une macro de cette facon :
    Call Corr_RBaseActivite_1(sReportingFile)

    Ce qu'il y a d'étonnant, c'est qu'il ne me signale aucune erreur. En faisant F5, il repart sans aucun probleme.

    J'ai regardé l'aide de la méthode Open afin de vérifier s'il n'y avait un fonctionnement particulier dans certains ca... RIEN
    Est-ce le fait qu'il y ait la protection... Mais j'ai d'autres portions de code qui font une ouverture de la meme maniere et jamais de souci...
    J'ai vérifié dans les options de projet pour voir s'il n'y avait pa sun parametrage particulier... RIEN non plus

    Je ne vois pas trop !!!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    es ce que tu n'aurais pas mis un espion sur une variable ?. genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    arret si la variable est vrai

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Bonjour xc78370

    et en rajoutant un DoEvents après ta ligne?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Bonsoir,

    Citation Envoyé par alsimbad
    es ce que tu n'aurais pas mis un espion sur une variable ?.
    Non, aucun espion ! dans mon code !!!

    Citation Envoyé par mapeh
    et en rajoutant un DoEvents après ta ligne?
    meme en rajoutant un DoEvents... Il s'arrete simplement (exactement comme un break-point), il n'est pas du tout en attente d'un autre travail !

    Ca fait 10 ans que je fais du VB et c'est la premiere fois que je vois ca !!!!!!!

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,

    Workbooks.Open Filename:=sReportingFile
    il ne faut pas rajouter .xls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open Filename:=sReportingFile.xls
    Voir aussi S'applique à Exemple Détails Méthode Open
    telle qu'elle s'applique à l'objet Workbooks.

    Cette méthode ouvre un classeur.

    expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
    expression Obligatoire. Expression qui renvoie l'objet Workbooks.

    FileName Argument de type String obligatoire. Nom de fichier du classeur à ouvrir.

    UpdateLinks Argument de type Variant facultatif. Spécifie la façon dont les liens du fichier sont mis à jour. Si vous ne spécifiez pas cet argument, l'utilisateur est invité à indiquer comment les liens doivent être mis à jour. Dans le cas contraire, cet argument a l'une des valeurs répertoriées dans le tableau suivant.

    Valeur Signification
    0 Ne met à jour aucune référence
    1 Met à jour des références externes mais pas des références distantes
    2 Met à jour des références distantes mais pas des références externes
    3 Met à jour des références distantes et des références externes

    Si Microsoft Excel ouvre un fichier au format WKS, WK1 ou WK3 et si l'argument UpdateLinks a la valeur 2, Microsoft Excel génère des graphiques à partir des diagrammes attachés au fichier. Si l'argument a la valeur 0, aucun graphique n'est créé.

    ReadOnly Argument de type Variant facultatif. True pour ouvrir le classeur en lecture seule.

    Format Argument de type Variant facultatif. Si Microsoft Excel ouvre un fichier texte, cet argument spécifie le séparateur de caractères, comme l'indique le tableau suivant. Si vous ne spécifiez pas cet argument, le séparateur en cours est utilisé.

    Valeur Séparateur
    1 Tabulations
    2 Virgules
    3 Espaces
    4 Points-virgules
    5 Rien
    6 Caractère personnalisé (voir argument Delimiter)

    Password Argument de type Variant facultatif. Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé. Si vous ne spécifiez pas cet argument et si le classeur requiert un mot de passe, l'utilisateur est invité à entrer ce mot de passe.

    WriteResPassword Argument de type Variant facultatif. Chaîne qui contient le mot de passe requis pour écrire dans un classeur protégé en écriture. Si vous ne spécifiez pas cet argument et si le classeur requiert un mot de passe, l'utilisateur est invité à entrer ce mot de passe.

    IgnoreReadOnlyRecommended Argument de type Variant facultatif. True pour que Microsoft Excel n'affiche pas le message de recommandation d'ouverture en lecture seule (si le classeur a été enregistré avec l'option Read-Only Recommended).

    Origin Argument de type Variant facultatif. Si le fichier est un fichier texte, cet argument indique sa provenance (de sorte que les pages de codes et le Retour chariot/Saut de ligne (CR/LF) puissent être mappés correctement). Il peut s'agir de l'une des constantes XlPlatform suivantes : xlMacintosh, xlWindows ou xlMSDOS. Si vous ne spécifiez pas cet argument, le système d'exploitation en cours est utilisé.

    Delimiter Argument de type Variant facultatif. Si le fichier est un fichier texte et l'argument Format a la valeur 6, cet argument est une chaîne qui spécifie le caractère à utiliser comme séparateur. Par exemple, utilisez Chr(9) pour les tabulations, "," pour les virgules, ";" pour les point-virgules, ou utilisez un caractère personnalisé. Seul le premier caractère de la chaîne est utilisé.

    Editable Argument de type Variant facultatif. Si le fichier est un complément Microsoft Excel 4.0, cet argument a la valeur True pour ouvrir le complément dans une fenêtre visible. Si cet argument a la valeur False ou s'il n'est pas spécifié, le complément est ouvert mais masqué et il ne peut pas être visible. Cette option ne s'applique pas aux compléments créés dans Microsoft Excel 5.0 ou toute version ultérieure. Si le fichier est un modèle Excel, la valeur True ouvre le modèle spécifié pour le modifier. Cet argument a la valeur False pour ouvrir un nouveau classeur à l'aide du modèle spécifié. Valeur par défaut : False.

    Notify Argument de type Variant facultatif. Si le fichier ne peut pas être ouvert en lecture-écriture, cet argument a la valeur True pour ajouter le fichier à la liste de notification des fichiers. Microsoft Excel ouvre le fichier en lecture seule, interroge la liste de notification des fichiers, puis indique à l'utilisateur quand le fichier est disponible. Si cet argument a la valeur False ou s'il n'est pas spécifié, aucune notification n'est demandée et toute tentative d'ouverture d'un fichier non disponible est impossible.

    Converter Argument de type Variant facultatif. Index du premier convertisseur de fichier à essayer lors de l'ouverture du fichier. Le convertisseur de fichier spécifié est essayé en premier ; si ce convertisseur ne reconnaît pas le fichier, tous les autres convertisseurs sont essayés. L'index du convertisseur est constitué du nombre de lignes des convertisseurs renvoyé par la propriété FileConverters.

    AddToMru Argument de type Variant facultatif. True pour ajouter ce classeur à la liste des fichiers récemment utilisés. La valeur par défaut est False.

    Local Argument de type Variant facultatif. La valeur True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). La valeur False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui est généralement l'anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).

    CorruptLoad Argument de type Variant facultatif. Il peut s'agir de l'une des constantes suivantes : xlNormalLoad, xlRepairFile et xlExtractData. Le comportement par défaut, si aucune valeur n'est spécifiée, est habituellement normal mais il peut s'agir d'un chargement sans incident ou d'une récupération des données, si Excel a déjà tenté d'ouvrir le fichier.La première tentative engendre un comportement normal. Si l'exécution de Microsoft Excel est interrompue pendant l'ouverture du fichier, la deuxième tentative entraîne un chargement sans incident.Si Excel est de nouveau interrompu, la tentative suivante provoque une récupération des données.

    Méthode Open telle qu'elle s'applique à l'objet RecentFile.

    Cette méthode ouvre un classeur récent.

    expression.Open
    expression Obligatoire. Expression qui renvoie l'objet RecentFile.

    Exemple
    Cet exemple montre comment ouvrir le classeur Analysis.xls puis comment exécuter sa macro Auto_Open.

    Workbooks.Open "ANALYSIS.XLS"
    ActiveWorkbook.RunAutoMacros xlAutoOpen
    c juste une idée

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Merci pour ton idee, mais sReportingFile est une variable dans laquelle est stockée le nom de mon fichier à ouvrir (c'est d'ailleur le parametre de ma fonction)...
    Quant à l'aide, merci bien, mais c'est la premiere chose que j'avais été voir... Cependant, il y a peut-etre qq chose qui m'a échappé !!!

    Petite précision, le classeur est bien ouvert, ce qui signifie que la méthode Open est bien exécutée, mais que le debugueur reste bloqué sur l'appel !!!!!

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,
    Petite précision, le classeur est bien ouvert, ce qui signifie que la méthode Open est bien exécutée, mais que le debugueur reste bloqué sur l'appel !!!!!
    il n y a pas un verouillage qqconque ou l attente d une reponse lors de l ouverture du fichier ?

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    je m'excuse d'insister, mais l'arret que tu décris est exactement ce qui ce produit pour un arret concernant le changement d'état d'une variable. essaye ça, tu verra

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Hello

    Citation Envoyé par alsimbad
    je m'excuse d'insister, mais l'arret que tu décris est exactement ce qui ce produit pour un arret concernant le changement d'état d'une variable. essaye ça, tu verra
    Je suis d'accord avec toi... Je n'arrive pas à acceder à la pafe que tu m'as mis en paraletre ! Puis-je la visualiser autrement ? Ou peux tu m'expliquer ce que ca représente ?

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Salut...
    Citation Envoyé par patbou Voir le message
    il n y a pas un verouillage qqconque ou l attente d une reponse lors de l ouverture du fichier ?
    Je me suis dit pareil, donc j'ai regardé l'état du fichier ouvert... Il est correct, pas de message, pas d'erreur, pas de question...
    De plus comme je l'ai dit plus haut, un simple appui sur F5 reprend le cycle du programme sans que j'ai à saisir qq chose ou à cocher qq part !

    Je vais devenir fou !!!

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    Citation Envoyé par xc78370
    Je n'arrive pas à acceder à la pafe que tu m'as mis en paraletre
    et moi, je ne connais pas ce langage, mais je suppose que tu n'arrive pas a visualiser la piece jointe
    c'est juste un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub var
    u= false
    u = true
    msgbox u
    end sub
    puis tu fais
    menu débogage / ajouter un espion, tu ajoute u
    tu prend l'option : arret si la valeur est vrai , ou bien l'autre: arret si la valeur change,
    et tu teste. tu constatera que l'effet est le meme que ce qui t'arrive.
    en plus tu constatera aussi que l'arret se produit a la ligne suivante de la variable en cause.
    j'édite :
    a priori, tu dois voir ton espion en faisant affichage / fenetre espion
    mais sinon, tu peux aussi faire un essai en remplaçant le nom de cette variable par un autre.

  14. #14
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Citation Envoyé par alsimbad Voir le message
    et moi, je ne connais pas ce langage, mais je suppose que tu n'arrive pas a visualiser la piece jointe
    Effectivement je me suis mis à parler le plutonien !!! C'est ma 3eme langue vivante que je parle presque couramment !!!!!! Désolé
    Citation Envoyé par alsimbad Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub var
    u= false
    u = true
    msgbox u
    end sub
    puis tu fais
    menu débogage / ajouter un espion, tu ajoute u
    tu prend l'option : arret si la valeur est vrai , ou bien l'autre: arret si la valeur change,
    et tu teste. tu constatera que l'effet est le meme que ce qui t'arrive.
    en plus tu constatera aussi que l'arret se produit a la ligne suivante de la variable en cause.
    j'édite :
    a priori, tu dois voir ton espion en faisant affichage / fenetre espion
    mais sinon, tu peux aussi faire un essai en remplaçant le nom de cette variable par un autre.
    Je vais essayer, mais j'ai déjà affiché la fenetre espion, rien n'apparait dans la liste... Je vais tenter de mettre un espion afin de constater.
    Je vais faire un programme à part pour tester si c'est mon programme qui est 'spécial' ou si ca fait pareil dans un autre cas !!!

    En tout cas, merci pour ton aide !!!

  15. #15
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    A part ça, je peut rien pour toi. pas d'autre idée qui me vienne.
    bon week end quand même

  16. #16
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Il n'y a vraiment aucun espion, ni dans mon classeur principal, ni dans mon classeur appelé...
    J'ai fait deux autres classeurs tout neufs pour voir si le probleme etait le meme. Je n'ai le pb.

    A priori cela vient de mes fichiers que j'essaie d'ouvrir. Ce sont des fichiers qui ont une protection. Cela ne devrait pas poser de pb car je passe le mot de passe dans la commande "Open" ! J'ai enlevé la protection de mes fichiers, mais j'ai toujours le meme pb !

    Merci de ton aide aslimbad...

    Quelqu'un aurait encore une idee ?

  17. #17
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Par défaut
    Bonjour,

    Ca y est j'ai trouvé...

    En fait le fichier que je tentais d'ouvrir est protégé (ce qui en soi ne pose pas de probleme) et cette protection m'empechait de voir qu'un 'STOP' se trouvait dans le code exécuté à l'ouverture du classeur.
    Cela faisait donc comme un break-point (dans le classeur ouvert), attendant un ordre d'exécution... Et je ne le voyais pas car le code etait protégé !

    Merci à tous pour l'aide.

    PS : je vais poser une autre question, car j'ai maintenant à régler ce cas !

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

Discussions similaires

  1. Exécution des requêtes non demandée
    Par lassaadpfe dans le forum Autres
    Réponses: 2
    Dernier message: 07/10/2011, 01h40
  2. [VBA-E] Saut de cellule non demandé
    Par luudii dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2007, 16h33
  3. [VBA-E]Form : demander une année
    Par repié dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/02/2006, 14h06
  4. Accès non autorisé à l'exécution d'une procédure stockée
    Par celine33 dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/01/2006, 10h27
  5. [VBA] MsgBox non definie
    Par coco21 dans le forum Access
    Réponses: 3
    Dernier message: 15/12/2005, 10h05

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