Bonjour,
J'ai recopier les codes des macros Récap et Initialise pour l'appliquer sur mon fichier et j'ai changer le nom des feuilles, mais un message de débogage s'affiche, ci-dessous les deux codes:
Sub Recap()
Dim Ws As Worksheet
Dim I As Integer, K As Integer, L As Integer, M As Integer, N As Integer
Dim J As Long, Nblg As Long
Dim Tbl1, Tbl2
Dim NbLignes
Dim Lg
Dim Feuilles
Dim Indice As Integer
Application.ScreenUpdating = False
NbLignes = Array(6, 29, 29, 29, 29)
Lg = Array(28, 14, 14, 14, 14)
Feuilles = Array("PV Global", "Chèques Supplémentaire 01", "Chèques Supplémentaire 02", _
"Chèques Supplémentaire 03", "Chèques Supplémentaire 04")
' Efface les zones de réception
Sheets(Feuilles(0)).Range("B28:D33,F28:H33").ClearContents
For I = 1 To UBound(Feuilles)
With Sheets(Feuilles(I))
.Range("B14:D42,F14:H42").ClearContents
.Visible = xlSheetVeryHidden
End With
Next I
' Nombre de ligne maximum (11 pages de 2 * 6 lignes) + (11 pages de 2 * 29 lignes) = 770 lignes / 2 recettes = 385
' Collecte sur les 22 pages
For L = 2 To 6 Step 4
Indice = 0
ReDim Tbl1(1 To 350, 1 To 3)
For I = 1 To 11
With Sheets("PV" & I)
For J = 28 To 33
If .Cells(J, L) <> "" Then
Indice = Indice + 1
For K = 0 To 2
Tbl1(Indice, K + 1) = .Cells(J, L + K)
Next K
End If
Next J
End With
With Sheets("PV" & I & " Sup")
If .Visible = xlSheetVisible Then ' Si la page Sup est masquée pas la peine de récolter
For J = 14 To 42
If .Cells(J, L) <> "" Then
Indice = Indice + 1
For K = 0 To 2
Tbl1(Indice, K + 1) = .Cells(J, L + K)
Next K
End If
Next J
End If
End With
Next I
' Recopie
If Indice > 0 Then ' Au moins 1 donnée
J = 0
For I = 0 To UBound(Feuilles)
K = Application.Min(NbLignes(I), Indice - J)
ReDim Tbl2(1 To K, 1 To 3)
For N = 1 To K
For M = 1 To 3
Tbl2(N, M) = Tbl1(J + N, M)
Next M
Next N
J = J + K
Sheets(Feuilles(I)).Cells(Lg(I), L).Resize(K, 3) = Tbl2
If (K < NbLignes(I)) Or (J = Indice) Then Exit For
Next I
If J < Indice Then
MsgBox "Attention des chèques de " & IIf(L = 2, "Recette Caisse Résidentiel", "Recette Caisse Corpo") & " n'ont pu être recopiés"
End If
End If
Next L
For I = 1 To UBound(Feuilles)
With Sheets(Feuilles(I))
If (.Range("B14") <> "") Or (.Range("F14") <> "") Then
.Visible = xlSheetVisible
End If
End With
Next I
End Sub
Sub Initialise()
Dim Ws As Worksheet
Dim I As Integer
If MsgBox("Attention vous allez effacer toutes les informations sur ces pages", _
vbInformation + vbYesNo + vbDefaultButton2, "Opération irréversible") <> vbYes Then Exit Sub
For I = 1 To 11
' Avec le Tableau des monnaies
'Sheets("J" & I).Range("B14:B24,F14:F24,B28:D33,F28:H33").ClearContents
' Sans le tableau des monnaies
Sheets("PV" & I).Range("B28:D33,F28:H33").ClearContents
With Sheets("PV" & I & " Sup")
.Range("B14:D42,F14:H42").ClearContents
.Visible = xlSheetVeryHidden
End With
Next I
Sheets("PV11").Visible = xlSheetVeryHidden
Sheets("PV Global").Range("B28:D33,F28:H33").ClearContents
For Each Ws In Sheets(Array("Chèques Supplémentaire 01", "Chèques Supplémentaire 02", _
"Chèques Supplémentaire 03", "Chèques Supplémentaire 04"))
Ws.Range("B14:D42,F14:H42").ClearContents
Ws.Visible = xlSheetVeryHidden
Next Ws
End Sub
Je n'arrive pas à comprendre ou est le problème !!!!
Merci.
A+
Galaxy201000