Problème list box et check box Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
stepaustras
Membre fidèle
Membre fidèle
Messages : 207
Appréciations reçues : 2
Inscrit le : 12 mai 2015
Version d'Excel : 2007

Message par stepaustras » 18 janvier 2016, 20:14

:mrgreen: :lol: :lol: OK merci

Mais sinon OK je vais refaire ma form dans ton sens ça sera plus pratique surement, par contre seul les cellules écrite VRAI m'intéresse si c'est = FAUX alors on ne met rien, je parle pour que le nom du cheval apparaisse dans la listbox. :mrgreen:
Avatar du membre
d3d9x
Membre dévoué
Membre dévoué
Messages : 946
Appréciations reçues : 2
Inscrit le : 14 avril 2015
Version d'Excel : 2007

Message par d3d9x » 18 janvier 2016, 20:57

Voilà le userform. Je pense qu'il va répondre pleinement à ta demande.

J'attends ton retour. Si cela te convient, merci de marquer le sujet comme résolu.

PS: Il prendra en compte toutes les feuilles dont le nom contient "course " (l'espace est très important)
PS: Il ignore la casse, donc si tu décides de mettre "COURSE 1" ou "Course 1" ou "CoUrSe 125263" ça marchera
PROPOSITION2.7z
(2.3 Kio) Téléchargé 29 fois
“En temps de paix, les fils ensevelissent leurs pères ; en temps de guerre, les pères ensevelissent leurs fils. Sommes-nous en guerre Père?”
Avatar du membre
muratime
Membre fidèle
Membre fidèle
Messages : 306
Appréciations reçues : 3
Inscrit le : 16 janvier 2008
Version d'Excel : 2007 FR

Message par muratime » 19 janvier 2016, 04:17

:mrgreen: .
s
stepaustras
Membre fidèle
Membre fidèle
Messages : 207
Appréciations reçues : 2
Inscrit le : 12 mai 2015
Version d'Excel : 2007

Message par stepaustras » 19 janvier 2016, 04:54

Ok merci bcp D3D9X :sp: :bien: juste un souci mineur et comme un gros discoure............ :mrgreen:

Je met le code pour savoir quoi modifier
Private Sub CheckBox11_Click()
updateResultat
End Sub
Private Sub CheckBox13_Click()
updateResultat
End Sub
Private Sub CheckBox14_Click()
updateResultat
End Sub
Private Sub CheckBox15_Click()
updateResultat
End Sub
Private Sub CheckBox16_Click()
updateResultat
End Sub



Private Sub CommandButton1_Click()
Unload Me
End Sub



Private Sub CommandButton3_Click()
Dim ole1 As Control
For Each ole1 In UserForm1.Controls
If Left$(ole1.Name, 8) = "CheckBox" Then ole1.Value = True
Next
End Sub

Private Sub CommandButton4_Click()
Dim ole1 As Control
For Each ole1 In UserForm1.Controls
If Left$(ole1.Name, 8) = "CheckBox" Then ole1.Value = False
Next
End Sub





Private Sub UserForm_Initialize()
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    If LCase(ws.Name) Like "*course *" Then
        listCourses.AddItem ws.Name
    End If
Next ws




End Sub


Private Sub updateResultat()
Dim critere1 As Boolean, critere2 As Boolean, critere3 As Boolean, critere4 As Boolean, critere5 As Boolean
Dim respectCriteres As Boolean

respectCriteres = False

listResultats.Clear

If listCourses.ListIndex = -1 Then Exit Sub 'on a pas sélectionné de course

critere1 = CheckBox11.Value 'AG
critere2 = CheckBox13.Value 'S
critere3 = CheckBox14.Value 'Y
critere4 = CheckBox15.Value 'AB
critere5 = CheckBox16.Value 'AF

Set ws = ActiveWorkbook.Sheets(listCourses.List(listCourses.ListIndex))

Dim numLigne As Long

With ws
    For numLigne = 2 To ws.Cells(Rows.Count, "B").End(xlUp).Row
        If critere1 Or critere2 Or critere3 Or critere4 Or critere5 Then respectCriteres = True 'Si au moins un critère est spécifié on met True
        
        If critere1 And .Cells(numLigne, "AG") <> True Then respectCriteres = False
        If critere2 And .Cells(numLigne, "S") <> True Then respectCriteres = False
        If critere3 And .Cells(numLigne, "Y") <> True Then respectCriteres = False
        If critere4 And .Cells(numLigne, "AB") <> True Then respectCriteres = False
        If critere5 And .Cells(numLigne, "AF") <> True Then respectCriteres = False
        
        If respectCriteres = True Then addResponse (.Cells(numLigne, "B").Value)
        
    Next numLigne
End With
End Sub

Private Sub addResponse(ByVal nomResultat As String)
Dim i As Integer
If listResultats.ListCount = 0 Then
    listResultats.AddItem nomResultat
Else
    For i = 0 To listResultats.ListCount - 1
        If listResultats.List(i) = nomResultat Then
            'On écrit rien et on sort
            Exit Sub
        End If
    Next i
    'On a testé tous les éléments, il n'est pas présent
    listResultats.AddItem nomResultat
End If

End Sub
Avatar du membre
d3d9x
Membre dévoué
Membre dévoué
Messages : 946
Appréciations reçues : 2
Inscrit le : 14 avril 2015
Version d'Excel : 2007

Message par d3d9x » 19 janvier 2016, 10:18

Oui en effet je l'ai codé comme ça. rajoute ça au code du formulaire
Private Sub listCourses_Click()
updateResultat
End Sub
Private Sub listCourses_Change()
updateResultat
End Sub
“En temps de paix, les fils ensevelissent leurs pères ; en temps de guerre, les pères ensevelissent leurs fils. Sommes-nous en guerre Père?”
s
stepaustras
Membre fidèle
Membre fidèle
Messages : 207
Appréciations reçues : 2
Inscrit le : 12 mai 2015
Version d'Excel : 2007

Message par stepaustras » 19 janvier 2016, 10:38

OK merci bcp ça marche nickel :sp:

Juste encore un petit truc a te demander je voudrais supprimer dans les feuilles course 1, course 2 etc ... toute les lignes qui sont supérieur ou égal à la date qui se trouve en D8 sur ma feuille Accueil de mon fichier original, j'ai essayé ça mais ça marche pas. :lol:
Sub SupprDate()
Dim madate As Date
Dim x As Integer
If (Range("D8")) Then
madate = (Range("D8"))
For x = Range("A65536").End(xlUp).Row To 2 Step -1
If Range("A" & x) >= madate Then Rows(x).Delete
Next
End If
End Sub
Avatar du membre
d3d9x
Membre dévoué
Membre dévoué
Messages : 946
Appréciations reçues : 2
Inscrit le : 14 avril 2015
Version d'Excel : 2007

Message par d3d9x » 19 janvier 2016, 11:09

Ton code est "faux" car lorsque tu fais ton
maDate = Range("D8")
Il prend la feuille active. Donc si tu es sur une page de course, bah maDate = 2850m -> pas ce que tu voulais.

Donc testes déjà en écrivant:
maDate = Sheets("Accueil").Range("D8")
et en lancant ta procéduire depuis la feuille de courses à "nettoyer"
“En temps de paix, les fils ensevelissent leurs pères ; en temps de guerre, les pères ensevelissent leurs fils. Sommes-nous en guerre Père?”
s
stepaustras
Membre fidèle
Membre fidèle
Messages : 207
Appréciations reçues : 2
Inscrit le : 12 mai 2015
Version d'Excel : 2007

Message par stepaustras » 19 janvier 2016, 11:25

J'ai essayé un truc comme ça, ça me supprime toutes les dates :lol:
Sub SupprDate()
Dim madate As Date
Dim x As Integer

madate = Sheets("Accueil").Range("D8")
For x = Range("A65536").End(xlUp).Row To 2 Step -1
If Range("A" & x) >= madate Then Rows(x).Delete
Next

End Sub
Alors j'ai essayé de changer le >= par <= et rien ne se passe :lol:
Avatar du membre
d3d9x
Membre dévoué
Membre dévoué
Messages : 946
Appréciations reçues : 2
Inscrit le : 14 avril 2015
Version d'Excel : 2007

Message par d3d9x » 19 janvier 2016, 11:42

Ta date n'est pas en D8 ...
Le code suivant supprime toutes les lignes STRICTEMENT AVANT la date spécifiée.
Sub SupprDate()
Dim madate As Long
Dim x As Integer

madate = CLng(Sheets("Accueil").Range("D3").Value)
For x = Range("A65536").End(xlUp).Row To 2 Step -1
If CLng(Range("A" & x)) < madate Then Rows(x).Delete
Next

End Sub
“En temps de paix, les fils ensevelissent leurs pères ; en temps de guerre, les pères ensevelissent leurs fils. Sommes-nous en guerre Père?”
s
stepaustras
Membre fidèle
Membre fidèle
Messages : 207
Appréciations reçues : 2
Inscrit le : 12 mai 2015
Version d'Excel : 2007

Message par stepaustras » 19 janvier 2016, 11:51

d3d9x a écrit :Ta date n'est pas en D8 ...
QUEL NAZE JE SAIS PAS POURQUOI JE FAIS UNE FIXETTE SUR D8 c'est D3 :lol: :lol: ça fonctionne mieux effectivement et D8 doit être egal a 0 cellule vide donc me supprime quand même si D8 est vide.

reste plus que le petit morceaux qui dira que si je reste en feuille Accueil (je met un bouton) qu'il le fasse pour feuil course 1 etc ...

PS: J'ai mis ça car me faut le = pour mes calculs faut que les dates soit antérieur mais pas = a celle de D3
Sub SupprDate()
Dim madate As Date
Dim x As Integer

madate = Sheets("Accueil").Range("D3")
For x = Range("A5000").End(xlUp).Row To 2 Step -1
If Range("A" & x) >= madate Then Rows(x).Delete
Next

End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • VBA Text Box / List Box
    par Ahah » 11 janvier 2018, 09:28 » dans Excel - VBA
    10 Réponses
    526 Vues
    Dernier message par Ahah
    16 janvier 2018, 14:17
  • Probleme Macro list box zoom doubleclick
    par remi03 » 28 juin 2016, 17:44 » dans Excel - VBA
    4 Réponses
    316 Vues
    Dernier message par remi03
    29 juin 2016, 14:49
  • Check box
    par jahman » 5 novembre 2018, 11:59 » dans Excel - VBA
    7 Réponses
    135 Vues
    Dernier message par jahman
    5 novembre 2018, 18:34
  • Check Box
    par emilmick » 3 septembre 2016, 17:18 » dans Excel - VBA
    2 Réponses
    238 Vues
    Dernier message par emilmick
    3 septembre 2016, 18:56
  • Check Box; feuille protégée
    par Goems » 7 janvier 2019, 10:35 » dans Excel - VBA
    4 Réponses
    89 Vues
    Dernier message par Ausecour
    16 janvier 2019, 08:29
  • Bouton tout sélectionner check box
    par SachaLeChat9 » 8 février 2018, 10:41 » dans Excel - VBA
    2 Réponses
    164 Vues
    Dernier message par Andre13
    8 février 2018, 21:11