Microsoft 365 VBA

Friends223

XLDnaute Nouveau
Hello tous je suis nul en Macro, et je souhaite tout de même essayer de me simplifier la vie avec une modification dans un fichier Excel que j’utilise.
Comme dans le dessin (joint) je souhaiterai que ma ligne qui n’est pas validé par un oui dans la dernière colonne, reste sous les lignes qui elles sont terminé.
C’est peut-être tout simple pour certains d’entre vous, mais pour moi c’est complexe.
Existe-t-il une solution à mon problème ?


Cordialment
Hervé
 

Friends223

XLDnaute Nouveau
Hello Merci a tous, j'ai eu un code par un autre contact, i fonctionne pas trop mal , je partage.

Merci a vous

Sub Tri()



Dim DerLig As Integer



Dim Plage As Range



With Sheets("Demande de TRANSFERT ")



DerLig = .Range("A" & Rows.Count).End(xlUp).Row

Set Plage = .Range("A4:U" & DerLig)



.Sort.SortFields.Clear

.Sort.SortFields.Add Key:=.Range("U4:U" & DerLig), SortOn:=xlSortOnValues, _

Order:=xlDescending, DataOption:=xlSortNormal



With .Sort

.SetRange Plage

.Header = xlGuess

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply



End With



End With



End Sub
 

fanch55

XLDnaute Barbatruc
Bon, j'arrive trop tard ... 😩

Code à mettre dans celui de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim To_Sort As Boolean
Dim D As Range, F As Range
Dim Lr As Long, I As Long

    Set D = Rows.Find("Date de la demande")             ' première cellule de la table
    Set F = Rows(D.Row).Find("Dossier Fini + Optilog")  ' dernière cellule de la 1ere ligne de table
    ' Dernière ligne de la feuille
    Lr = Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    Set Colonne = Me.Columns(F.Column).Rows(F.Row + 1 & ":" & Lr)

    For I = 1 To Target.Count
        If Not Intersect(Target.Cells(I), Colonne) Is Nothing Then To_Sort = True
        If To_Sort And I = Target.Count Then
            Sort.SortFields.Clear
            Sort.SortFields.Add Key:=F, _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With Sort
                .SetRange Range(Cells(D.Row , D.Column), Cells(Lr, F.Column))
                .Header = xlYes: .MatchCase = False
                .Orientation = xlTopToBottom: .SortMethod = xlPinYin
                .Apply
            End With
        End If
    Next
        
End Sub
 

Discussions similaires

Réponses
19
Affichages
4 K

Statistiques des forums

Discussions
315 123
Messages
2 116 458
Membres
112 748
dernier inscrit
Pboiusquet