Problème VBA

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 :

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.

Masako74.

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

Re,

Finalement je viens de comprendre que c'était plus un problème de confection du tableau plutôt que de VBA en soit tout fonctionne comme il faut. Je vais juste devoir construire mon tableau autrement.

Merci quand même

Bonjour,

Je ne vois pas de problème particulier, sauf que tu n'effaces pas la colonne F ni la colonne J, qui doivent absolument l'être...

Cordialement.

Rechercher des sujets similaires à "probleme vba"