Remplir un tableau suivant des critères

Bonjour, je viens de créer un nouveau fichier où je rentre des nom des joueurs avec un tableau.

La page joueurs liste tous les joueurs ainsi que leurs partenaires de double (s'il en ont).

Les cases vide dans Partenaires signifie que les joueurs ne joue pas cette catégorie.

Les cases avec un x signifie qu'ils veulent joué mais qu'ils n'ont pas de partenaires pour jouer.

Les cases remplis donne le partenaire voulant jouer avec.

Je remplis la liste des joueurs avec un userform.

J'ai un tableau et je voudrais qu'il me remplissent automatiquement les joueurs qui n'ont pas de partenaire (ceux avec un x dans les cases Double Homme; Double Dame et Double Mixte).

Comment doit se remplir le tableau:

La case C2 est un menu déroulant pour choisir la catégorie: ( " "; R4/R5; R6/D7; D8/D9; P)

La case F2 est un menu déroulant pour choisir le tableau: (" "; DH; DD; DM)

Dans mon exemple, si je choisi R6/D7 et en DH, on doit avoir deux joueurs dans le tableau:

Dupond Joel et Smith Nicolas

Si possible faire aussi que si la case C2 est vide; on considère toutes les catégories et la case F2 toutes les champs de partenaires.

Et que ce soit ranger par ordre des catégories (R4/R5 ensemble puis R6/D7, etc).

Est ce possible. Je pense qu'il faut le faire en VBA. J'avais pensé qu'il fallait utiliser rechercheV mais je ne sais pas comment faire.

Cordialement Nicolas.

28liste-joueurs.xlsm (29.20 Ko)

Je viens de tout refaire.

J'avais un soucis avec la macro pour ajouter une nouvelle ligne avec mon formulaire.

J'ai ajouté des segments (associé au tableau des joueurs).

Est ce que c'est possible de limiter des champs à affiché dans les segments.

Je m'explique:

Pour les partenaires de doubles et de mixte, on voit tous les noms de joueurs. Mais je ne veux pas avoir de recherche avec les noms de joueurs, je voudrais avoir comme choix que (vides) et x. Que ces deux choix ou un troisième si on peut dire champs non vide et non "x".

Est ce possible?

Edit, j'ai mis une case à cocher et je fais un filtre sur la colonne avec comme nom le "X"

Bonjour, bonne fêtes à toutes et tous.

Est ce c'est possible de dire je veux la dernière ligne d'un tableau (avec son nom dans le gestionnaire) au lieu d'une feuille complète?

C'est possible aussi avant de valider une nouvelle ligne sur le tableau avec le userform de vérifié que si la ligne 22 est vide, il faut copier dans ce ligne?

Actuellement, il rajoute toujours une lignes dans mon tableau mais étant donné que la première ligne est toujours vide, il reste un vide.

Dans le userform, est ce que c'est possible une fois que le formulaire a été validé de lui dire qu'il se positionne sur un bouton (btnFermer) ou dans la case nom (txtNom).

Nicolas.

Edit:Je viens de faire complètement différent. J'avais trop de mal avec les dernières lignes donc j'ai bloqué chaque ajout sur la ligne 22 en mode insert de ligne.

Bonsoir, j'ai besoin d'un petit peu d'aide.

Je reprends depuis le début, il y a eu beaucoup de changements.

Dans la feuille joueurs, j'ai des segments pour faire plus facilement mes tris dans le tableau (recherche) ainsi que deux cases à cocher pour faire que des recherches avec un seul champs.

Je remplis le tableau avec un userform. Il insère toujours à la ligne 22 le nouvelle enregistrements.

J'ai changé les textbox en combobox pour les nom de personnes dans l'userform.

J'ai supprimé mon tableau des joueurs dans le feuille table.

Je viens de récupérer directement les noms avec ce code:

Private Sub UserForm_Initialize()

  Dim J As Long
  Dim i As Variant
x = Range("Tjoueurs[Nom]").Cells.Count
With Sheets("joueurs")
For Each i In Array(1, 11, 12)
    For J = 22 To (22 + x)
        If Cells(J, i) <> "" Then
                cboNom.AddItem .Cells(J, i) 'Ajoute les valeurs des cellules
                cboDouble2.AddItem .Cells(J, i) 'Ajoute les valeurs des cellules
                cboMixte2.AddItem .Cells(J, i) 'Ajoute les valeurs des cellules
                Trier cboNom, True  ' si alphabétique
                Trier cboDouble2, True  ' si alphabétique
                Trier cboMixte2, True  ' si alphabétique
        End If
    Next J
Next i
End With
Sub Trier(Cbo As ComboBox, Alpha As Boolean)
    Dim i As Long, J As Long
    Dim Tmp

    If Alpha = True Then
        For i = 0 To Cbo.ListCount - 1
            For J = i To Cbo.ListCount - 1
                If Cbo.List(J) < Cbo.List(i) Then
                    Tmp = Cbo.List(i)
                    Cbo.List(i) = Cbo.List(J)
                    Cbo.List(J) = Tmp
                End If
            Next
        Next
    Else
        For i = 0 To Cbo.ListCount - 1
            For J = i To Cbo.ListCount - 1
                If CDbl(Cbo.List(J)) < CDbl(Cbo.List(i)) Then
                    Tmp = Cbo.List(i)
                    Cbo.List(i) = Cbo.List(J)
                    Cbo.List(J) = Tmp
                End If
            Next
        Next
    End If
End Sub

C'est bien rangé dans l'ordre alphabérique, sans doublon et sans case vide.

Mais j'ai vu que ce code n'est pas très optimisé.

Nicolas.

Bonsoir, je voudrais rajouté des contrôles avant de valider le joueur.

'Verification que le joueur n'est pas déjà inscrit avec un partenaire de Double
Dim partdouble As Range
Set partdouble = Sheets("joueurs").Columns(11).Cells.Find(what:=partenaireDouble, LookAt:=xlWhole)

With Sheets("joueurs")
    If partenaireDouble <> "" And partenaireDouble <> "x" Then

        If partdouble Is Nothing Then
            MsgBox "Le joueur n'est pas inscrit encore avec un partenaire de Double"
        Else
            MsgBox "Le joueur est déjà inscrit avec un partenaire de Double"
        End If
    End If
    Set partdouble = Nothing
End With

'Verification que le joueur n'est pas déjà inscrit avec un partenaire de Mixte
Dim partmixte As Range
Set partmixte = Sheets("joueurs").Columns(12).Cells.Find(what:=partenaireMixte, LookAt:=xlWhole)

With Sheets("joueurs")
    If partenaireMixte <> "" And partenaireMixte <> "x" Then
        If partmixte Is Nothing Then
            MsgBox "Le joueur n'est pas inscrit encore avec un partenaire de Mixte"
        Else
            MsgBox "Le joueur est déjà inscrit avec un partenaire de Mixte"
        End If
    End If
    Set partmixte = Nothing
End With

Y-a-t-il plus simple?

J'aimerais bien avoir pleins de contrôles et si tout est ok, on fait l'ajout dans le tableau.

Comment faire? En gros une instruction erreur=erreur+1

Si erreur = 0 then Ajouter les valeurs dans le tableau joueurs

J'ai fais un bouton pour modifier les lignes avec l'userform.

Il reprend tous les champs dans l'userform.

Si je valide la modification de l'utilisateur, il voit déjà que le partenaire est déjà dans la colonne. (Normal vu que l'on modifie le joueur).

Mais le joueur peut avoir encore le même partenaire, changer ou ne plus en avoir.

Est ce que c'est possible de retirer la cellule de la ligne dans partDouble et partMixte.

maxrow = ActiveCell.Row
Set plage = Union(Range(Cells(maxrow + 1, 11), Cells(30, 11)), Range(Cells(1, 11), Cells(maxrow - 1, 11)))

plage.Select

J'ai bien ma selection mais comment remplacer les chiffres par les début et fin du tableau?

Le tableau commence en 22 et fini quand c'est la fin.

Edit: c'est bon j'ai trouvé.

Nicolas.

Bonjour, je voudrais savoir si c'est possible de faire en vba la vérification que Tjoueurs[Partenaire de Double] et Tjoueurs[Partenaire de Mixte] soit bien présent dans Tjoueurs[Nom].

En gros si une personne est noté en partenaire, je dois aussi l'avoir en joueur. Mais si je n'ai pas encore leur feuille d'inscription où une personne a mis son nom alors qu'il ne fait pas le tournoi, ca ne peut pas aller.

Cordialement Nicolas.

Edit:

Sub compare()

Sheets("tableau de bord").ListBox1.Clear

    Dim Cell As Range
    Dim Unique As New Collection
    Dim Valeur As Range

    On Error Resume Next
    'boucle sur les cellules des colonnes de partenaires
    For Each Cell In Range("Tjoueurs[Partenaire de Double]:Tjoueurs[Partenaire de Mixte]")
        'Stocke les données dans une collection
        'ne pas prendre en compte les X et les cellules vides
        If Cell <> "" And Cell <> "X" Then
        Unique.Add Cell, CStr(Cell)
        End If
    Next Cell
    On Error GoTo 0

    'Boucle sur le contenu de la collection pour alimenter la ListBox
    For Each Valeur In Unique
            If Application.CountIf(Sheets("joueurs").Range("Tjoueurs[Nom]"), Valeur) = 0 Then
        Sheets("tableau de bord").ListBox1.AddItem Valeur
     End If
    Next Valeur
Call SortListBox
Sub SortListBox()
    Dim i As Long, j As Long, x As Long, sTemp As String
    With Sheets("tableau de bord").ListBox1
        For j = LBound(.List) To UBound(.List) - 1 Step 1
            For i = LBound(.List) To UBound(.List) - 1 Step 1
                If .List(i) > .List(i + 1) Then
                    For x = 0 To (.ColumnCount - 1) Step 1
                        sTemp = .List(i, x)
                        .List(i, x) = .List(i + 1, x)
                        .List(i + 1, x) = sTemp
                    Next x
                End If
            Next i
        Next j
    End With
End Sub

La liste est aussi trié par ordre alphabétique.

Bonsoir, je voulais savoir si on pouvait controler que la ligne est équivalent à une autre dans un autre ordre.

Je recherche une macro pour vérifier que les lignes sont bien cohérant.

En gros, que John Smith (A5) fait bien du R6/D7 (I5) avec Bruce wayne est bien égale à Bruce wayne (A6) fait bien du R6/D7 (I6) avec John Smith (K6)

Là, pas de soucis c'est bien cohérent.

Mais si on regarde john smith et eva Longoria, il n'est pas identique. Donc je veux le voir dans une liste qu'il y a un problème entre John Smith et Eva Longoria.

Le soucis se trouve dans le tableau de mixte (colonne J) mais ça aurait pu être un partenaire différent (colonne L)

Une nouvelle liste dans la page tableau de bord comme celle que j'ai déjà.

Pensez-vous que c'est faisable?

21test.xlsm (154.18 Ko)
Rechercher des sujets similaires à "remplir tableau suivant criteres"