Bonjour à tous et bonne année
J'ai ce code qui avait pour objectif d'imprimer uniquement les onglets ayant une donnée en a1 et de les imprimer dans un ordre précis ( du plus petit au plus grand/ ordre défini par la cellule a1).
Mon problème est que l'ordre est plus ou moins respecté et je ne comprends pas pourquoi.J'imprime sur pdf creator les onglets que je fusionne par la suite (excel 2003).
Si vous voyez un erreur dans le code qui peux expliquer cela , pouvez vous le découvrir.
Je ne suis pas l'auteur de ce code.
Merci pour votre aide
sub test()
Dim i As Long, a(), n As Long
ReDim a(1 To Sheets.Count, 1 To 2)
For i = Worksheets("listing").Index + 1 To Worksheets.Count
With Worksheets(i)
If .Range("a1").Value <> 0 Then
n = n + 1
a(n, 1) = .Name
a(n, 2) = .Range("a1").Value
End If
End With
Next
VSortMA a, 1, n, 2
For i = 1 To n
Sheets(a(i, 1)).PrintOut
Next
End Sub
Private Sub VSortMA(ary, LB, UB, ref)
Dim M As Variant, i As Long, ii As Long, iii As Long
i = UB: ii = LB
M = ary(Int((LB + UB) / 2), ref)
Do While ii <= i
Do While ary(ii, ref) < M
ii = ii + 1
Loop
Do While ary(i, ref) > M
i = i - 1
Loop
If ii <= i Then
For iii = LBound(ary, 2) To UBound(ary, 2)
temp = ary(ii, iii): ary(ii, iii) = ary(i, iii): ary(i, iii) = temp
Next
ii = ii + 1: i = i - 1
End If
Loop
If LB < i Then VSortMA ary, LB, i, ref
If ii < UB Then VSortMA ary, ii, UB, ref
End Sub
J'ai ce code qui avait pour objectif d'imprimer uniquement les onglets ayant une donnée en a1 et de les imprimer dans un ordre précis ( du plus petit au plus grand/ ordre défini par la cellule a1).
Mon problème est que l'ordre est plus ou moins respecté et je ne comprends pas pourquoi.J'imprime sur pdf creator les onglets que je fusionne par la suite (excel 2003).
Si vous voyez un erreur dans le code qui peux expliquer cela , pouvez vous le découvrir.
Je ne suis pas l'auteur de ce code.
Merci pour votre aide
sub test()
Dim i As Long, a(), n As Long
ReDim a(1 To Sheets.Count, 1 To 2)
For i = Worksheets("listing").Index + 1 To Worksheets.Count
With Worksheets(i)
If .Range("a1").Value <> 0 Then
n = n + 1
a(n, 1) = .Name
a(n, 2) = .Range("a1").Value
End If
End With
Next
VSortMA a, 1, n, 2
For i = 1 To n
Sheets(a(i, 1)).PrintOut
Next
End Sub
Private Sub VSortMA(ary, LB, UB, ref)
Dim M As Variant, i As Long, ii As Long, iii As Long
i = UB: ii = LB
M = ary(Int((LB + UB) / 2), ref)
Do While ii <= i
Do While ary(ii, ref) < M
ii = ii + 1
Loop
Do While ary(i, ref) > M
i = i - 1
Loop
If ii <= i Then
For iii = LBound(ary, 2) To UBound(ary, 2)
temp = ary(ii, iii): ary(ii, iii) = ary(i, iii): ary(i, iii) = temp
Next
ii = ii + 1: i = i - 1
End If
Loop
If LB < i Then VSortMA ary, LB, i, ref
If ii < UB Then VSortMA ary, ii, UB, ref
End Sub