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 :

Procédure ne s’exécute qu'en mode pas à pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Procédure ne s’exécute qu'en mode pas à pas
    Bonsoir à tous,
    J'ai beau me creuser la tête je ne trouve pas la raison qui fait qu'une partie de ma macro ne s'exécute que lorsque je la lance depuis l'éditeur de macro.

    Voici la partie de mon code où intervient mon problème, ligne 6 où j’appelle une Sub nommée "Delete_lines"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Data")
                          NbLine1 = .Cells(.Rows.Count, 2).End(xlUp).Row  ' define the number of line
              End With
     
                    If NbLine1 > 5 Then
                    Delete_lines
                    End If
    Et voici le code de la Sub
    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
    35
    Sub Delete_lines()
    Dim Main As Worksheet
    Dim Data As Worksheet
    Dim WBS As Worksheet
    Dim MSLine As Range
    Dim WBSLine As Range
    Dim Phs As String
    Dim i As Integer
    Dim NbLine1 As Integer
    Set Main = ThisWorkbook.Sheets("Main")
    Set Data = ThisWorkbook.Sheets("Data")
    Set MSLine = Data.Range("A1")
    MSLine = MSLine.Offset(0)
    Set WBSLine = Main.Range("B6")
    WBSLine = WBSLine.Offset(0)
     
    With Sheets("Data")
        NbLine1 = .Cells(.Rows.Count, 2).End(xlUp).Row  ' define the number of line
    End With
     
    For i = 0 To NbLine1
     If MSLine.Offset(i, 1) = "" Then
        Rows(i + 1 & ":" & i + 1).Delete Shift:=xlUp ' Delete all empty lines
     End If
    Next i
     
    i = 0
    Do While MSLine.Offset(i, 1) <> ""
        If i > 1 And MSLine.Offset(i, 1) = WBSLine.Offset(0, 0) Then
        Rows(i + 1 & ":" & i + 1).Delete Shift:=xlUp ' Delete all lines with Phase Name to keep only one activity with the Phase name
        End If
        i = i + 1
    Loop
     
    End Sub
    Ce qui doit se passer avant l'appel de la Sub Delete_lines s'effectue normalement ainsi que ce qui doit être traité après, mais lorsque je vérifie le résultat après avoir lancé ma macro depuis un bouton je vois que la partie qu'aurait du réaliser la sub n'a pas été réalisée.
    En lançant la macro avec la touche F5 depuis l'éditeur de macro, je n'ai pas ce problème.

    Quelqu'un a-t-il une idée de ce qui m'échappe?

    Merci pour votre aide

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    deux pistes, je n'ai pas eu le temps de creuser réellement ton code :

    1) en précédant l'appel de ta macro par un Call, ça ne résoud pas le problème ?


    2) tu as essayé de mettre un point d'arrêt dans Delete_lines, histoire de voir si en lançant la macro principal (hors pas à pas), tu rentres bien dans Delete_lines ?



    EDIT : attention quand dans une boucle tu fais des suppressions ... il est toujours conseillé de commencer par le bas et de remonter, histoire d'éviter les problèmes de "ça ne supprime qu'une ligne sur deux"
    (si je supprime la ligne 2, la ligne 3 devient la ligne 2 etc...)

  3. #3
    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
    Bonsoir,

    attention du as des lignes ou tu ne précise pas la feuille concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Rows(i + 1 & ":" & i + 1).Delete Shift:=xlUp ' Delete all empty lines
    devant les objets Rows, Columns, Cells ... il faut toujours préciser la feuille et le classeur concerné..

  4. #4
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonsoir,

    j’appelle une Sub nommée "Delete_lines"
    Est-ce que cette procédure est dans le même module???

    Car j'ai eu le même problème récemment

    Seb

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Quand tu effaces des lignes, commence par la fin.
    Ça fonctionne mieux...

  6. #6
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonsoir Joe, Bbill et Sebphyto

    Joe,
    Je vais essayer le Call, je ne connaissais pas et mettre un point d'arret dans la procédure Delete_lines, je n'y avais pas pensé
    Bbill,
    Je vais préciser la feuille également, mieux vaut ne pas donner le baton pour se faire battre
    Sebphyto,
    Effectivement la procédure est dans le même module, c'était ton cas également?
    Merci pour vos conseils, je vois demain et vous tiens au courant;
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  7. #7
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Sebphyto,
    Effectivement la procédure est dans le même module, c'était ton cas également?
    Donc dans ce cas, pas besoin d'appeler le module, ça été mon cas, mais la procédure n'était pas dans le même module...

    mais es-tu sûr que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If NbLine1 > 5 Then
                    Delete_lines
                    End If
    "NbLine1" ne sois pas toujours inférieur à 5, parce que dans ce cas il ne lancera jamais ta sub "Delete_lines".

    Seb

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

Discussions similaires

  1. [AC-2007] la mode debogage pas à pas ne fonctionnement pas
    Par s.rais dans le forum Access
    Réponses: 2
    Dernier message: 03/06/2014, 14h38
  2. comment éxécuter un job en mode debogage pas à pas
    Par sinoun dans le forum Exécution et industrialisation
    Réponses: 2
    Dernier message: 13/03/2012, 13h48
  3. Réponses: 8
    Dernier message: 04/04/2009, 11h37
  4. Debuger une procédure stockée en mode pas à pas
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2004, 10h59
  5. Procédures d'installation pas-à-pas
    Par Fabien Celaia dans le forum Langage SQL
    Réponses: 0
    Dernier message: 11/12/2003, 11h25

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