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"
Et voici le code de la Sub
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
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.
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
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
Partager