Problème comptage

Bonjour

Lorsque je compte mes lignes sélectionner avec le Combobox5, si un mois sélectionné est vide, cela me met une erreur.

8interv1.xlsm (45.60 Ko)

Bonjour,

Un essai ...

'Choix du mois
Private Sub ComboBox5_Change()
Dim mois, x%

    mois = ComboBox5.Value
    Set ws = Worksheets("Astreinte")

    ws.Range("J2").AutoFilter field:=10, Criteria1:=mois

    'On comptes les cellules
    If ws.Range("J2").Value <> "" Then
        On Error Resume Next
        x = ws.Range("J2:J" & ws.Range("A1048576").End(xlUp).Row).SpecialCells(xlVisible).Count
        On Error GoTo 0
        TextBox9.Text = x
    Else
        MsgBox ("C'est vide"), vbExclamation + vbDefaultButton2
    End If

End Sub

ric

Merci cela fonctionne.

Une autre question.

Pour faire ma recherche des mois, j'ai créer une colonne "J" pour récupérer mes mois..

y a t'il pas un autre moyen de le faire sans cette colonne qui ne me sert a rien dans mon tableau ?

ws.Range("J2").AutoFilter field:=10, Criteria1:=mois

Bonjour,

Il faut donc utiliser les filtres chronologiques et filtres avancés sur la colonne A ...

Pour avoir les mois sous la forme "01", "02", etc. > j'ai modifié le combobox en combobox multicolonne (voir "UserForm_Initialize" ) ...

Puis > j'ai modifié "ComboBox5_Change" > afin d'utiliser les dates de la colonne A ...

Si cela te convient > tu pourras supprimer la colonne "J" ...

Je ne sais s'il y aurait une meilleure méthode > m'enfin > celle-ci fonctionne ...

Ne sois pas surpris si les jours et les mois sont inversés sur le filtre avancé > je suis au Canada-Français et les paramètres de ma machine sont différents de l'Europe > s'il y a un souci > je corrigerai le code ...

ric

Merci

ça fonctionne sauf, pour certains mois : février , avril, juin, septembre, novembre.

Il y a bien des enregistrements dans mon tableau (1 pour chaque mois), mais lorsque je sélectionne dans mon Combobox un de ces mois cité ci-dessus, il n'y a rien qui apparait en ligne ainsi que le compteur qui reste à zéro ?

Bonjour,

Désolé pour le manque de tests ...

Et comme ceci ?

'Choix du mois
Private Sub ComboBox5_Change()
Dim Mois$, An$, x%, Derjour$

    ' besoin de l'année > vérifie si l'année n'est pas vide
    If Me.ComboBox4.ListIndex = -1 Then
        MsgBox "Sélectionner une année avant de continuer ... "
        Exit Sub
    End If

    Mois = ComboBox5.Column(1)
    An = ComboBox4

    Set ws = Worksheets("Astreinte")

    ' dernier jour du mois
    Derjour = Day(DateSerial(An, Mois + 1, 0))

    ws.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _
          ">=" & Mois & "-01" & "-" & An, Operator:=xlAnd, Criteria2:="<=" & Mois & "-" & Derjour & "-" & An

    'On comptes les cellules
    If ws.Range("J2").Value <> "" Then
        On Error Resume Next
        x = ws.Range("J2:J" & ws.Range("A1048576").End(xlUp).Row).SpecialCells(xlVisible).Count
        On Error GoTo 0
        TextBox9.Text = x
    Else
        MsgBox ("C'est vide"), vbExclamation + vbDefaultButton2
    End If

End Sub

ric

Merci

cela fonctionne très bien...

Petite question. Comment traduit on ce bout de code :

ws.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _
          ">=" & Mois & "-01" & "-" & An, Operator:=xlAnd, Criteria2:="<=" & Mois & "-" & Derjour & "-" & An

surtout au niveau des critères ? je ne comprend pas les guillemets : ">=" "-01" "-"

Bonojour,

j'ai appliqué ce code pour compter :

'On applique le filtre (Nb total intervention/client...)
    If (ws.Range("C2").Value = "Client") And (ws.Range("G2").Value = "Oui") Then
        On Error Resume Next
        a = ws.Range("C2:C" & "G2:G" & ws.Range("A1048576").End(xlUp).Row).SpecialCells(xlVisible).Count
        On Error GoTo 0
        TextBox8.Text = a
    Else
        MsgBox ("C'est vide"), vbExclamation + vbDefaultButton2
    End If
    

cela me met des chiffres complètement faux.

5interv1.xlsm (71.99 Ko)

Bonjour,

Basé sur le fichier que tu nous soumets > est-ce que tu peux me donner un exemple de résultat qui est faux afin que je puisse reproduire cette erreur ?

ric

Oui, basé sur le fichier, si par exemple je sélectionne l'année : 2020 et le mois de : Novembre, il ya donc 3 lignes dont 1 qui correspond à mon filtre : "Client & Oui", et cela affiche dans mon textBox8 : 249 ?? au lieu de 1.

Bonjour,

Comment est-ce que tu appliques le filtre "Client & Oui"  ?

ric

Edit >> je viens de capter ...

En fait, il faut qu'il y ait les 2 conditions ("Client & Oui") pour faire un comptage, pour le mois sélectionné et l'année.

J'ai repris l'exemple du code comptage total des lignes.

Bonjour,

Un autre essai ...

'Choix du mois
Private Sub ComboBox5_Change()
Dim Mois$, An$, Derjour$
Dim a%, Z%, x%

    ' besoin de l'année > vérifie si l'année n'est pas vide
    If Me.ComboBox4.ListIndex = -1 Then
        MsgBox "Sélectionner une année avant de continuer ... "
        Exit Sub
    End If

    Mois = ComboBox5.Column(1)
    An = ComboBox4
    a = 0

    Set ws = Worksheets("Astreinte")

    ' dernier jour du mois
    Derjour = Day(DateSerial(An, Mois + 1, 0))

    'On applique le filtre (Nb total intervention/mois...)
    ws.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=">=" & Mois & "-01" & _
            "-" & An, Operator:=xlAnd, Criteria2:="<=" & Mois & "-" & Derjour & "-" & An

    'On applique le filtre (Nb total intervention/client...)
    For Z = 1 To Range("Tableau1").ListObject.ListRows.Count
        If (Range("Tableau1[Source]").SpecialCells(xlVisible).Item(Z, 1) = "Client") And _
           (Range("Tableau1[Intervention]").SpecialCells(xlVisible).Item(Z, 1) = "Oui") Then a = a + 1
    Next Z

    If a = 0 Then
        MsgBox ("C'est vide"), vbExclamation + vbDefaultButton2
    Else
        TextBox8.Text = a
    End If

    'On comptes les cellules
    If ws.Range("A2").Value <> "" Then
        On Error Resume Next
        x = ws.Range("A2:A" & ws.Range("A1048576").End(xlUp).Row).SpecialCells(xlVisible).Count
        On Error GoTo 0
        TextBox9.Text = x
    Else
        MsgBox ("C'est vide"), vbExclamation + vbDefaultButton2
    End If
End Sub

ric

merci,

il y a une erreur.

Lorsque je sélectionne en exemple : an=2019, mois = 15/01/19, il y a dans mes colonnes C & G respectivement : "Client et Oui" cela devrait donc m'indiquer dans le Textbox8 : 1. Et bien cela indique : 4 ?

Bonjour,

Je viens de tester à nouveau et j'ai bien 1 comme résultat ...

ric

test

Désolé, moi j'ai cela avec ton fichier télécharger ? Je ne comprend pas...Cela m'affiche : 5 au lieu de 1 ??

Bonjour,

Ouupppssss!!!! > Je crois que je n'avais pas bien compris ton propos.

Je regarde ...

ric

Bonjour,

Mais dis-moi > quelle est la différence entre Textbox8 et Textbox9 ?

Quel résultat de calcul chacun doit afficher ?

ric

Alors :

Textoxbox9 = comptage total d’intervention toute confondu pour un mois choisi .

Textbox8 = comptage pour un mois choisi avec comme critères « Client et Oui » dans les colonnes respectives 3 et 7.

Bonjour,

Un essai ...

ric

Rechercher des sujets similaires à "probleme comptage"