Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apocalypse

XLDnaute Nouveau
Bonjour,

J'essaie de mettre en place une gestion d'équipe pour le club auquel j'appartiens à travers un fichier excel.
N'étant pas un grand utilisateur d'Excel je découvre peu à peu ses fonctionnalités donc j'espère que vous serez indulgent avec moi 😉.

Je vous explique rapidement ce que j'ai fait et souhaite faire:
- la feuille Liste des joueurs contient les joueurs du club que je peux ajouter dans des équipes
- la feuille Gestion permet d'ajouter les joueurs dans des équipes, à travers cette feuille je veux aussi montrer à l'utilisateur si il peut ou non ajouter certains joueurs dans certaines équipes
- la feuille Param permet de mettre en place des paramètres (nombre de joueur par équipes, nombre de joueurs qui sont en dehors de l'UE par équipes...)
- la feuille Règles permet de mettre en place certaines règles qui permettent ou non d'ajouter des joueurs dans l'équipe

Actuellement dans la feuille Gestion j'ai "réussi" à mettre en place la règle "nombre de joueur par équipes" à travers des cellules qui passent au vert quand le nombre de joueurs dans l'équipe est correct.
Je dis réussi car comme vous pouvez le voir dans un autre post et dans la feuille que je partage j'ai bidouillé car la formule ne semble pas fonctionner dans la mise en forme des cellules sans passer par une cellule intermédiaire.

Maintenant je que je vous ai expliqué mon besoin voici mon problème : je pensais que je pourrais faire tous mes tests via des formules Excel mais force est de constater que cela s'avère plus compliqué qu'attendu, et je pense que je vais devoir faire un peu de VBA.

Autant pour les tests numérotés 1 et 5 cela me paraît simple sans passer par du VBA, autant pour les tests 2-3-4 cela me semble impossible ou alors très compliqué.
Pour le moment je m'attaque au test numéro 2 mais si vous avez des indications pour les autres tests je suis preneur.
Donc pour le test numéro 2 "Test du nombre de joueurs hors EU dans l'équipe" je voyais cela comme cela :
- récupérer la liste des licences des joueurs qui sont sélectionnés, puis vérifier si ces joueurs sont hors EU

Malheureusement mes compétences en VBA sont quasi nulles, comme vous pouvez le voir dans les macro j'ai essayé de faire une macro pour parcourir toutes les checkbox de la feuille active mais cela ne fonctionne pas : le code ne rentre jamais dans la boucle For...

VB:
Sub ListerCheckboxClicked()

    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
    
    For Each obj In ActiveSheet.OLEObjects
        Response = MsgBox(obj.Name + " " + obj.Index, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
        If TypeOf obj.Object Is msforms.CheckBox Then
            Response = MsgBox(obj.Name + " " + obj.Index, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj
    
End Sub

De plus si je dois faire du VBA pour un test autant tout tester en VBA, qu'en pensez-vous ?
 

Pièces jointes

Solution
Bonjour apocalypse, le forum,

En effet il faut corriger le 4ème test comme suit :
VB:
        '---4ème test sur le brûlage (cas d'un joueur ayant joué 2 fois dans une équipe supérieure)---
        Set plage1 = .Cells(-2, 4).Resize(, col - 3) 'ligne des équipes
        Set plage2 = .Cells(lig, 4).Resize(, col - 3)
        If Application.CountIf(plage2, rep) > 1 Then
            For i = 1 To plage2.Count
                If plage2(i) = rep Then ReDim Preserve a(n): a(n) = plage1(i): n = n + 1
            Next i
            i = Application.Small(a, 2) 'PETITE.VALEUR
            If equipe > i Then
                ac.Interior.Color = RGB(121, 15, 2) 'colore en rouge
                MsgBox joueur + " doit être au moins dans l'équipe " & i &...
Bonjour apocalyps ,
j'ai changé les Controls par mes Controls ActiveX et ca a l'air de fonctionner !
de plus j'ai constaté que tes Controls étaient superposés par 2 au moins sur la première colonne !
voir la vidéo
Cordialement
jean marie
 

Pièces jointes

  • Test-checkBox-12.gif
    Test-checkBox-12.gif
    311.5 KB · Affichages: 29
Dernière édition:
Bonjour à tous,
Pouvez-vous tester si sous 2019, dans l'onglet Insertion du Ruban vous avez la possibilité d’insérer des cases à cocher ? Insertion/Contrôle/Case à cocher.
Cela vous rendrais moult service et simplifierait le classeur.
 
Bonjour à tous,
Pouvez-vous tester si sous 2019, dans l'onglet Insertion du Ruban vous avez la possibilité d’insérer des cases à cocher ? Insertion/Contrôle/Case à cocher.
Cela vous rendrais moult service et simplifierait le classeur.
Bonjour,

Oui j'ai cela, je l'ai ajouté manuellement quand j'ai vu que ce n'était pas une option par défaut
1752486236500.png


Cependant je ne connais pas la méthode ni l'explication de ChTi160 donc je vais regarder ce qu'il propose et essaye de comprendre puis l'appliquer 😉.
 
Bonjour apocalypse, le forum,

On peut utiliser de fausses cases à cocher avec la police Wingdings, voyez le fichier joint.

Le pilotage se fait par cette macro évènementielle :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, [F16:Q22]) Is Nothing Then Exit Sub
ActiveCell = IIf(ActiveCell = "", "ü", "")
[B14].Select 'la colonne B est masquée
End Sub
A+
 

Pièces jointes

Bonjour apocalyps ,
j'ai changé les Controls par mes Controls ActiveX et ca a l'air de fonctionner !
de plus j'ai constaté que tes Controls étaient superposés par 2 au moins sur la première colonne !
voir la vidéo
Cordialement
jean marie
Comment vois-tu la superposition ?
J'ai supprimé toutes mes checkbox pour essayer d'ajouter 3 controls ActiveX, et effectivement mon VBA fonctionne cependant il m'affiche 2 fois chaque box coché donc je suppose que ça vient de le superposition.

Cependant si j'affiche tous les objets de la feuille je ne voix que 3 checkbox :

1752487220056.png


Et je suppose que le comptage se fait sur des checkbox "superposé" car là ça ne fonctionne pas du tout avec les nouveaux controls ActiveX:
1752487287830.png
 

Pièces jointes

Le tableau est structuré (Tableau8) donc on utilisera plutôt :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, [Tableau8].Columns(4).Resize(, 12)) Is Nothing Then Exit Sub
ActiveCell = IIf(ActiveCell = "", "ü", "")
[B14].Select 'la colonne B est masquée
End Sub
 

Pièces jointes

Rr
Tu as deux fois l'affichage dans ta procédure :
VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)    
    For Each obj In ActiveSheet.OLEObjects
'a supprimer   ici     Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
        If TypeOf obj.Object Is msforms.CheckBox Then
            Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj    
End Sub
jean marie
 
Tu as deux fois l'affichage dans ta procédure :
VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)  
    For Each obj In ActiveSheet.OLEObjects
'a supprimer   ici     Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
        If TypeOf obj.Object Is msforms.CheckBox Then
            Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj  
End Sub
jean marie
Ahah effectivement...
Ok donc j'arrive bien à boucler sur les checkbox merci.

Je vais maintenant regarder comment changer le style et récupérer le positionnement de la cellule afin de récupérer les informations du joueur sélectionné 😉.
 
Tu as deux fois l'affichage dans ta procédure :
VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)  
    For Each obj In ActiveSheet.OLEObjects
'a supprimer   ici     Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
        If TypeOf obj.Object Is msforms.CheckBox Then
            Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj  
End Sub
jean marie
Par contre cela n'explique par que le comptage ne soit pas juste sur ces nouvelles checkbox 🙁.
 
Re
je ne comprends pas ceux ci :"Par contre cela n'explique par que le comptage ne soit pas juste sur ces nouvelles checkbox ."
quel comptage ?

Tu dis :"Oui j'ai cela, je l'ai ajouté manuellement quand j'ai vu que ce n'était pas une option par défaut"
As tu regardé dans "insertion" de la Barre "Developeur" ?
Jean marie
 
re
Effectivement ! il n'y a plus le Test "Si true"
voir avec ça !
VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
    For Each obj In ActiveSheet.OLEObjects
        If TypeOf obj.Object Is msforms.CheckBox And obj.Object = True Then
            Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj
End Sub
jean marie
 
Re
ce que j'ai testé
J'ai Nommé les CheckBox ainsi Colonne "F" "CkcB_15_1" à "CkcB_21_1" 15 est la première Ligne ,jusqu'a la Ligne 21
en Colonne "G" "CkcB_15_2" à "CkcB_21_2" Etc etc
j'ai déclaré une Constante "colonne "Joueur"
Const Col As Byte = 4

VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Dim Lgn As Integer
     Const Col As Byte = 4
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
    For Each obj In ActiveSheet.OLEObjects
        If TypeOf obj.Object Is msforms.CheckBox And obj.Object = True Then
        Lgn = Mid(obj.Name, InStr(1, obj.Name, "_") + 1, 2)
        MsgBox Cells(Lgn, Col).Value 'On récupère le Nom du Joueur 

        End If
    Next obj
End Sub
à voir !
Jean marie
 

Pièces jointes

re
Effectivement ! il n'y a plus le Test "Si true"
voir avec ça !
VB:
Sub ListerCheckboxClicked()
    Dim obj As OLEObject
    Response = MsgBox("test", vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
    For Each obj In ActiveSheet.OLEObjects
        If TypeOf obj.Object Is msforms.CheckBox And obj.Object = True Then
            Response = MsgBox(obj.Name, vbOK, "MsgBox Demonstration", "DEMO.HLP", 1000)
            obj.Object.Caption = "test"
        End If
    Next obj
End Sub
jean marie

Je parlais de la formule excel que l'on voit dans ma screenshot.

1752495207665.png


Merci pour votre aide je vais pouvoir essayer de travailler sur cette base 😉.

Après si je passe toutes mes vérifications en VBA je n'aurai pas besoin de ça mais c'est plus pour être sûr qu'il n'y a pas de problème sous-jacent à ces checkbox.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
243
Réponses
5
Affichages
1 K
Réponses
2
Affichages
589
Retour