Extraire les valeurs d'une plage et les trier

Bonjour à tous...

J'ai un souci pour extraire les valeurs d'une plage les copier dans une autre (ça j'y arrive) mais ensuite je voudrais les lister dans l'ordre croissant.

Pour organiser des compet d'escrime, on rentre les tireurs nom prénom ect... puis on constitue les poules en fonction de leur année de naissance.

les années de naissances sont répertorier sur une feuille (tous les tireurs) dans mon fichiers dans la colonne D à partir de la cellule D2.

Les inscriptions se font via un userform qui permet d'inscrire les gamins 1 par 1.

J'arrive à copier les valeurs (sans doublon) de la coilonne D de la feuille 1 vers la colonne A de la feuille 2, mais je n'arrive pas ensuite à les classer dans l'ordre croissant.

(j'ai tenté d'appliquer le bouton trier à la colonne, mais à l'inscription suivante tout est chamboulé à nouveau.)

Je copie pour ensuite pouvoir travailler ces valeurs pour constituer les groupes.

Voici la macro utilisée pour copier les valeurs. (piquée sur un autre forum et adaptée par mes soins)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim coll As Collection
 Dim cellule As Range
 Dim cptr As Long
 Dim tlt As Worksheet

 Set tlt = Worksheets("Tous les tireurs")
 Set coll = New Collection

 For Each cellule In tlt.Range("D2:D3000")
 On Error Resume Next
 coll.Add cellule.Value, cellule.Value
 On Error GoTo 0
 Next
 For cptr = 1 To coll.Count
 Cells(cptr + 1, 1) = coll(cptr)
 Next
 Set coll = Nothing
End Sub

Si vous aviez une solution, elle serait la bienvenue.

Question subsidiaire si j'ai une case vide dans ma colonne D (c'est forcé j'aurai jamais 3000 participants) elle apparait aussi dans la liste de valeurs ya t'il moyen de supprimer ce vide?

Merci d'avance

troph

Bonjour,

un petit fichier exemple ?

voili voilou

Vous trouverez surement d'autres erreurs dues à mon inexpérience.

Merci

31escrime-compet.zip (17.27 Ko)

J'aurais mis du temps mais je pense avoir fait quelque-chose qui à l'air de rouler.

edit 1 : enfin presque, je corrige un point et je change le fichier après

edit 2 : done

38escrime-compet.xlsm (31.03 Ko)

Merci guitouille

ça fonctionne sauf que ta modif ne fonctionne qu'à l'ouverture du fichier excel.

si je rentre un nouveau tireur, ça redevient l'anarchie.

d'où ma question béotienne y a t'il moyen d'appeler la macro de la page "calculs" via le bouton valider de l'userform...

Bonjour, j'ai fais quelques petits test, à vous de me dire si ça fonctionne mieux ^^

argh j'ai une erreur debogage peut etre est-ce du à ma version 2003 ou alors à des modif qu j'ai faites hier.

toujours est-il en bidouillant cette nuit j'ai trouvé une solution qui à l'air de fonctionner.

voici le code utiliser au niveau de la macro associer au bouton validation.

calc.Select
Dim coll As Collection
 Dim cellule As Range
 Dim cptr As Long

 Set coll = New Collection

 For Each cellule In tlt.Range("D2:D3000")
 On Error Resume Next
 If cellule.Value <> "" Then
 coll.Add cellule.Value, cellule.Value
 On Error GoTo 0
 End If
 Next
 For cptr = 1 To coll.Count
 Cells(cptr + 1, 1) = coll(cptr)

 Next
 Set coll = Nothing
 Application.EnableEvents = False
 Dim k As Integer

 k = WorksheetFunction.CountA(Sheets(2).Range("A:A"))

  Worksheets("calculs").Columns("A:A").Select
    Range("A2:A" & k).Sort Key1:=Range("A1"), Order1:=xlDescending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Application.EnableEvents = True
tlt.select

merci de m'avoir aidé

A bientot

Troph

Rechercher des sujets similaires à "extraire valeurs plage trier"