Sub qui s'arrête au milieu de son éxécution
Bonjour,
J'ai un soucis avec le code que j'ai écris ce matin (il n'a jamais marché encore), je suis encore novice en vba donc c'est peut être quelque chose de bête mais bon.
J'ai écris une macro qui extrait des données en fonction des entrées utilisateurs et j'ai un problème lorsque j'essaye de formater celles-ci.
Lorsque j’exécute le code en mode débogage, il s’arrête sur ma première ligne de modification du fichier (Commentaire marqué numéro 2) et reprend sur la ligne avec un commentaire marqué numéro 1 comme s'il y avait eu un goto au lieu de la concaténation.
Je n'ai pas d'erreur de la part d'excel
Qu'est ce qu'il se passe dans mon code ? J'ai déjà eu un soucis semblable et avait été incapable d'en déterminer la cause.
Si vous avez besoin de plus d'informations n'hésitez pas !
Merci d'avance !
Sub generateFiles()
' ... Beaucoup de lignes de traitements ...
createCsv
Workbooks(FichierOùCopier).Activate '<========================== Ligne 1
Application.DisplayAlerts = True
End Sub
Sub createCsv()
'
' CreateCsv Macro
'
Dim i As Integer, j As Integer, str As String, numRows As Integer
FormatLines
numRows = Last(1, Range("A1", "C65536"))
i = 0
While (i <= numRows)
j = i
While (j > 0 And StrComp(Cells(j, 8), Cells(i, 8)) = 0)
j = j - 1
Wend
If (i = j) Then
Cells(i, 9) = Cells(i, 13)
Else
Cells(i, 9) = Cells(j, 9) & " / " & Cells(j, 13)
Rows(i).Delete
End If
Cells(i, 13) = ""
Wend
End Sub
Sub FormatLines()
Dim i As Integer, numRows As Integer
Sheets(1).Activate
i = 0
numRows = Last(1, Range("A1", "C65536"))
With Sheets(1)
While (i <= numRows)
.Cells(i, 8).Value = .Cells(i, 3).Value & .Cells.Value(i, 4) '<===================================================== Ligne 2
.Cells(i, 13) = Format(.Cells(i, 6), "dddd") & " " & Format(.Cells(i, 1), "hhmm") & " " & Format(.Cells(i, 2), "hhmm")
.Cells(i, 11) = 1724
.Cells(i, 12) = "things...."
If (i < Rows.count / 3) Then
.Cells(i, 1) = "ADE"
ElseIf (i < Rows.count / 3 * 2) Then
.Cells(i, 1) = "CRI"
Else
.Cells(i, 1) = "DER"
End If
i = i + 1
Wend
End With
End Sub
Bon, pour ceux qui viennent d'autres langages et qui se auraient ce genre de problème.
Le problème était tout bête mais excel ne prévient pas des out of bound, je tapais en dehors de la feuille et donc il sortais de la procédure (par contre je ne sais pas pourquoi il n'éxecutais pas une partie du code dans la procédure qui l'appellait).
Bonjour,
Tu peux avoir le nombre de lignes dans ton fichier autrement :
numRows = Rows.Count
Si c'est la dernière ligne remplie que tu veux, ce sera par exemple :
numRows = Range("A" & Rows.Count).end(xlUp).Row