Problème VBA

Dureux

XLDnaute Nouveau
Bonjour,

Me revoilà avec un problème sur la partie Triage de mon Code.
Tout fonctionne, seulement si vous utiliser la Macro qui permet de générer la feuille de Relance, les cases "Acompte", "Reste à Payer" et Commentaires, se décalent de case et cela à chaque fois que le trie se lance... J'aimerais vraiment éviter ce problème.
Pourtant les cases Télephone et Mail qui eux sont automatisé ne se mélange pas.

Voici le code en question , je peux remercier Bebere pour cela d'ailleurs :) :

Code:
Dim Ws As Worksheet

Sub RelanceTEST()
    Dim a(), i As Long, L As Long, cel As Range
    ' ReglerNon Macro
    ' Trie l'échéancier selon que régler = Non
    Feuil10.Range("A8:E200").ClearContents    'feuil10 codename de feuille RelaceEntête
    For Each Ws In Worksheets
        If IsNumeric(Left(Ws.Name, 2)) Then
            L = Ws.Range("A65000").End(xlUp).Row
            If L > 7 Then
                For Each cel In Ws.Range("G8:G" & L)
                    If cel = "Non" Then
                        i = i + 1: ReDim Preserve a(1 To 5, 1 To i)    '
                        a(1, i) = cel.Offset(, -2)    'n°client
                        a(2, i) = cel.Offset(, -1)    'raison
                        a(3, i) = cel.Offset(, -6)    'Fact
                        a(4, i) = CDbl(cel.Offset(, -5))  'date facture
                        a(5, i) = cel.Offset(, -3)    'montant
                    End If
                Next
            End If
        End If
    Next
    a = Application.Transpose(a)    'a colonnes,lignes devient a lignes,colonnes
    Feuil10.Range("A8").Resize(UBound(a, 1), UBound(a, 2)) = a
    Feuil10.Columns("A:J").AutoFit
   
    'Permet de trier RelanceEntête selon le numéro client'
   
    ActiveWorkbook.Worksheets("RelanceEntête").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("RelanceEntête").Sort.SortFields.Add Key:=Range("A8:A125"), _
                                                                   SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("RelanceEntête").Sort
        .SetRange Range("A7:J125")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
End Sub

Sub FormuleTEST()
    Dim DerL As Long, L As Long
   
    Set Ws = Worksheets("RelanceEntête")
    DerL = Ws.Range("A65000").End(xlUp).Row
    For L = 8 To DerL
        Ws.Range("G" & L).FormulaLocal = "=SI(F" & L & ">0;E" & L & "-F" & L & ";"""")"
        Ws.Range("H" & L).FormulaLocal = "=INDEX('BDD Client'!$A$2:$G$5;EQUIV($A" & L & ";'BDD Client'!$A$2:$A$5;0);6)"
        Ws.Range("I" & L).FormulaLocal = "=INDEX('BDD Client'!$A$2:$G$5;EQUIV($A" & L & ";'BDD Client'!$A$2:$A$5;0);7)"
    Next

End Sub

Mon échéancier fonctionne de la façon suivante : Il est mensuel , quand il est écrit que "régler=Non" et qu'on lance la relance, ceux ou régler=non se génère dans le tableau de relance. Seulement afin de mieux suivre la relance l'utilisateur peut ajouter des commentaires ou suivre le montant à payer.

Voilà, j'espère que vous pourriez m'aider, en vous remerciant d'avance.

P.S : Toutes les données du tableau sont fictives.
 

Statistiques des forums

Discussions
315 087
Messages
2 116 082
Membres
112 654
dernier inscrit
SADIKA