Séparer les pointages des hommes de ceux des femmes

Bonjour à tous,

J'aimerais pouvoir séparer les pointages des hommes de ceux des femmes en créant, soit une formule ou un code VBA.

Le trie doit se faire du plus haut pointage jusqu'au plus petit dans chacun des tableaux Homme et Femme.

Les femmes sont identifiées par la lettre "F" et les hommes par la lettre "H".

SVP prendre note que des joueurs peuvent s'ajouter à ceux déjà inscrits. C'est pourquoi la liste de numéro s'étend de 1000 à 2000.

42test01.xlsm (42.83 Ko)

Merci à l'avance pour votre aide.

Bonjour Golfeur, bonjour le forum,

Le code commenté ci-dessous devrait convenir :

Sub Macro1()
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TF() As Variant 'déclare la variable TF (Tableau des Femmes)
Dim TH() As Variant 'déclare la variable TH (Tableau des Hommes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim F As Integer 'déclare la variable F (Femmes)
Dim H As Integer 'déclare la variable H (Hommes)

TV = Range("A1").CurrentRegion 'définit la variable TV
F = 1 'initialise la variable F
H = 1 'initialise la variable H
For I = 3 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
    If TV(I, 3) = "F" Then 'si la donnée ligne I colonne 3 de TV est égale à "F"
        ReDim Preserve TF(1 To 2, 1 To F) 'redimensionne le tableau des femmes TF (deux lignes, F colonnes)
        TF(1, F) = TV(I, 2) 'récupère le nom dans la première ligne
        TF(2, F) = TV(I, 4) 'récupère le pointage dans la seconde ligne
        F = F + 1 'incrémente F (rajoute une colonne au tableau des femmes TF)
    End If 'fin de la condition
    If TV(I, 3) = "H" Then 'si la donnée ligne I colonne 3 de TV est égale à "H"
        ReDim Preserve TH(1 To 2, 1 To H) 'redimensionne le tableau des hommes TH (deux lignes, H colonnes)
        TH(1, H) = TV(I, 2) 'récupère le nom dans la première ligne
        TH(2, H) = TV(I, 4) 'récupère le pointage dans la seconde ligne
        H = H + 1 'incrémente H (rajoute une colonne au tableau des femmes TF)
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
If F > 1 Then 'condition : si F est supérieure a 1 (au moins une occurrence a été trouvée)
    Range("F3").Resize(UBound(TF, 2), 2) = Application.Transpose(TF) 'renvoie dans la cellule F3 redimensionnée le tableau TF transposé
End If 'fin de la condition
If H > 1 Then 'condition : si H est supérieure a 1 (au moins une occurrence a été trouvée)
    Range("I3").Resize(UBound(TH, 2), 2) = Application.Transpose(TH) 'renvoie dans la cellule I3 redimensionnée le tableau TH transposé
End If 'fin de la condition
End Sub

Bonjour,

avec un simple TCD facile à comprendre et à modifier

P.

edit: salut à thautheme

58test01.xlsm (79.93 Ko)

Bonjour à vous deux,

Merci beaucoup pour vos réponses rapides.

ThauThème,

Ton code fonctionne parfaitement pour séparer les femmes des hommes mais il ne trie pas les pointages du plus grand au plus petit chez les femmes et chez les hommes. Est-ce que je peux ajouter un code de triage à ton code déjà existant sans qu'il y est danger de le modifier ?

patrick1957

Bonne idée pour le TCD mais il ne fait que séparer les femmes des hommes. Je n'arrive pas à séparer les pointages et les trier du plus haut au plus bas dans chacune des colonnes femmes et hommes.

Merci encore pour votre aide.

Bonjour tt le monde,

un essai via formule.

Cordialement.

56test01.xlsm (159.84 Ko)

bonjour

un essai

35golfeur22.xlsx (51.37 Ko)

cordialement

Re,

Avec le tri :

Sub Macro1()
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TF() As Variant 'déclare la variable TF (Tableau des Femmes)
Dim TH() As Variant 'déclare la variable TH (Tableau des Hommes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim F As Integer 'déclare la variable F (Femmes)
Dim H As Integer 'déclare la variable H (Hommes)

TV = Range("A1").CurrentRegion 'définit la variable TV
F = 1 'initialise la variable F
H = 1 'initialise la variable H
For I = 3 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
   If TV(I, 3) = "F" Then 'si la donnée ligne I colonne 3 de TV est égale à "F"
       ReDim Preserve TF(1 To 2, 1 To F) 'redimensionne le tableau des femmes TF (deux lignes, F colonnes)
       TF(1, F) = TV(I, 2) 'récupère le nom dans la première ligne
       TF(2, F) = TV(I, 4) 'récupère le pointage dans la seconde ligne
       F = F + 1 'incrémente F (rajoute une colonne au tableau des femmes TF)
   End If 'fin de la condition
   If TV(I, 3) = "H" Then 'si la donnée ligne I colonne 3 de TV est égale à "H"
       ReDim Preserve TH(1 To 2, 1 To H) 'redimensionne le tableau des hommes TH (deux lignes, H colonnes)
       TH(1, H) = TV(I, 2) 'récupère le nom dans la première ligne
       TH(2, H) = TV(I, 4) 'récupère le pointage dans la seconde ligne
       H = H + 1 'incrémente H (rajoute une colonne au tableau des femmes TF)
   End If 'fin de la condition
Next I 'prochaine ligne de la boucle
If F > 1 Then 'condition : si F est supérieure a 1 (au moins une occurrence a été trouvée)
   Range("F3").Resize(UBound(TF, 2), 2) = Application.Transpose(TF) 'renvoie dans la cellule F3 redimensionnée le tableau TF transposé
End If 'fin de la condition
If H > 1 Then 'condition : si H est supérieure a 1 (au moins une occurrence a été trouvée)
   Range("I3").Resize(UBound(TH, 2), 2) = Application.Transpose(TH) 'renvoie dans la cellule I3 redimensionnée le tableau TH transposé
End If 'fin de la condition
Range("F2").CurrentRegion.Sort Range("G2"), xlDescending, Header:=xlYes 'trie le tableau de femmes
Range("I2").CurrentRegion.Sort Range("J2"), xlDescending, Header:=xlYes 'trie le tableau de hommes
End Sub
golfeur01 a écrit :

Bonjour à vous deux,

patrick1957

Bonne idée pour le TCD mais il ne fait que séparer les femmes des hommes. Je n'arrive pas à séparer les pointages et les trier du plus haut au plus bas dans chacune des colonnes femmes et hommes.

Merci encore pour votre aide.

Faut juste bouger un peu au tcd et mettre le champ sexe en filtre de rapport

Un peu de curiosité et tu y arriveras Ca ne touche en rien la "base des donnés"

P.

Bonjour à tous,

Je suis époustouflé. Toutes vos solutions fonctionnent à merveille. Je n'ai que l'embarras du choix. Je vais appliquer celle qui s'adaptera le mieux à mon fichier principal.

Comme je l'ai mentionné précédemment à un do vos collègues, que se soit ThauThème, patrick1957, bigdaddy154, Tulipe_4 ou n'importe lequel de vos autres collègues, vous êtes très fort. Il est trop tard pour moi pour me rendre à votre niveau de connaissances , mais j'apprend beaucoup avec vous. Merci.

Merci beaucoup de votre aide.

Rechercher des sujets similaires à "separer pointages hommes ceux femmes"