Recopie et Tri Automatique de données

Bonjour à tous !

J'ai un code qui me permet de prendre les données d'un tableau sur ma feuille "Liste Dossier", de les copier dans l'ordre alphabétique et de les coller sur la feuille contenant ce code. Cependant, la dernière ligne du tableau "Liste Dossier" n'est pas copié sur l'autre feuille ! Ayant réadapté ce code après plusieurs recherches sur des forums, je pense qu'il doit soit manquer une ligne, soit y avoir une ligne en trop, qui empêche que la dernière ligne soit recopié. Si vous pouviez m'aider la-dessus ce serait sympa ! (Si quelqu'un cherche à recopier et trier une colonne, qu'il n'hésite pas à prendre ce code qui fonctionne cependant très bien, sauf pour la dernière ligne !)

Merci d'avance

Private Sub Worksheet_Activate()
Me.Range("B:B").Clear
Set liSte = CreateObject("scripting.dictionary")
With Sheets("Liste Dossier")
For Each c In .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
    liSte(c.Value) = c.Value
Next c
End With
Me.Range("B2:B" & liSte.Count) = Application.Transpose(liSte.keys)
Me.Range("B2:B" & liSte.Count).Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlNo
End Sub

Bonjour,

Pour clarifier un point, d'abord ... le code que tu mentionnes ne se contente pas de recopier et trier, il supprime aussi, au passage, les éventuels doublons qu'il y aurait en colonne B (grâce à l'utilisation d'un Objet "Dictionary"). En soi, ceci pourrait déjà expliquer que certaines données ne seraient pas copiées.

Comme tu n'as pas joint de fichier, on est bien forcé d'envisager toutes les hypothèses

D'autre part, si ton objet "dictionary" contient 20 items et que tu colles les clés du dictionnaire dans la plage allant de B2 à B ... 20, il risque bien de manquer une ligne, au final !

Bonjour,

Voici le fichier ! (j'ai supprimé toutes les données que je ne pouvais pas montrer). Le tableau de "liste dossier" est susceptible de changer, des nouvelles lignes pouvant y être ajoutés. Serait-il également possible de supprimer la ligne de code pour les doublons ? En effet, je peux me retrouver avec plusieurs dossiers portant le même nom !

5logiciel.xlsm (89.02 Ko)

Bonjour,

Un exemple.

Sous entendu que tu travailles avec un tableau et pas une plage de cellules.

Cdlt.

8logiciel.xlsm (95.43 Ko)
Private Sub Worksheet_Activate()
Dim lo As ListObject, lo2 As ListObject
Dim rCell As Range

    Set lo2 = Me.ListObjects(1)
    With lo2
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set rCell = .InsertRowRange.Cells(1)
    End With

    Set lo = Worksheets("Liste Dossier").ListObjects(1)
    lo.ListColumns(1).DataBodyRange.Copy
    rCell.PasteSpecial xlPasteValuesAndNumberFormats
    With lo2
        .Sort.SortFields.Add .ListColumns(1).DataBodyRange, xlSortOnValues, xlAscending
        .Sort.Apply
        .Sort.SortFields.Clear
    End With

End Sub

Parfait, ça fonctionne !

Merci

Rechercher des sujets similaires à "recopie tri automatique donnees"