Bug sur le total de lignes visibles : 1 au lieu de 0

Bonjour le forum et amis experts !

J'ai rencontré un bug de comptage de lignes filtrées dans mon fichier Excel 2003. En effet, il marche parfaitement sauf quand le filtre ne m'affiche aucune occurrence de lignes trouvées. Mon compteur affiche "1" alors qu'il devrait m'afficher "0". J'ai eu beau réétudier mon code de comptage, en essayer un autre, rien à faire ...

Sur un forum Internet, une personne avait relevé un problème de ce type, et solution trouvée en utilisant la fonction "DCountA" ne fonctionnait qu'avec des codes "AutoFilter", code que je n'utilise pas dans le cas pésent.

Je joins une partie de mon code ci-dessous. Pour info, je filtre les résultats de mes colonnes 6 et 10 par les choix de valeurs d'un userform à 2 combobox. Soit l'utilisateur choisi TOUT les choix des combobox, soit TOUT les choix d'une seule combobox, soit un élément de chacune des combobox :

Sub CommandButton1_Click()

Dim LastLig As Long, I As Long
Application.ScreenUpdating = False
On Error Resume Next

If Me.ComboBox3.ListIndex = -1 Or Me.ComboBox4.ListIndex = -1 Then Exit Sub

        With ActiveSheet.Cells
            .EntireColumn.Hidden = False
            .EntireRow.Hidden = False
        End With

LastLig = Cells(Rows.Count, 6).End(xlUp).Row

        If Me.ComboBox3.Value = "Toutes" And Me.ComboBox4.Value = "Toutes" Then
            With ActiveSheet.Cells
                .EntireColumn.Hidden = False
                .EntireRow.Hidden = False
            End With
            Range("B1") = "Toutes"
        GoTo Fin
        End If

        If Me.ComboBox3 = "Toutes" Then
            For I = LastLig To 4 Step -1
                If Cells(I, 10) = Me.ComboBox4 Then
                    Rows(I).Hidden = False
                Else
                    Rows(I).Hidden = True
                End If
            Next I
            Range("B1") = ComboBox4.Value
        GoTo Fin
        End If

        If Me.ComboBox4 = "Toutes" Then
            For I = LastLig To 4 Step -1
                If Cells(I, 6) = Me.ComboBox3 Then
                    Rows(I).Hidden = False
                Else
                    Rows(I).Hidden = True
                End If
            Next I
            Range("B1") = "Toutes"
        GoTo Fin
        End If

        For I = LastLig To 4 Step -1
            If Me.ComboBox3.Value = Cells(I, 6) And Me.ComboBox4.Value = Cells(I, 10) Then
            Rows(I).Hidden = False
            Else
            Rows(I).Hidden = True
            End If
            Range("B1") = ComboBox4.Value
        Next I

Fin:
Application.ScreenUpdating = True

Range("H2") = "Nombre de lignes : " & Range("B4:B" & Range("B65536").End(xlUp).Row).SpecialCells(xlVisible).Count

Unload Userform2
End Sub

Mon comptage se fait donc sur la dernière ligne de code avant fermeture du userform2.

Quelqu'un connaitrait-il ce bug et comment le corriger ?

Bonjour

Ton fichier est souhaitable car je n'arrive pas à reproduire les conditions pour n'avoir que 1 comme résultat

A moins que quelqu'un d'autre à la solution

Merci de me répondre Banzai

Je te joins mon fichier, que j'ai épuré au mieux (pour des raisons de confidentialité). Et en l'épurant, l'erreur change un peu ...

En cliquant en "J1" pour trier, tu peux choisir de tout visualiser (sur les 2 combobox, ou sur une seule), ou de trier les lignes en fonction des up ou down, puis des régions. Hors, dans cet exemple, il n'y a pas de ligne comprenant des Down et IDF en même temps, donc toutes les lignes sont masquées ... mais mon compteur n'est pas à "0" ...

Avant d'épurer la feuille de production des différentes cellules que j'avais, soit sur la ligne 1, soit sur la ligne 2, mon compteur (dans ce même cas de tri) affichait "1". Il semblerait donc que les 1eres lignes soient prises en compte, pourquoi ?


Flute ! ... mon fichier ne passe pas en pièce jointe car il fait 2,2 Mo...même après épuration.

Je vais voir comment pouvoir le mettre en ligne

Voilà, j'ai refais le fichier avec le code nécessaire afin que la taille limite en pièce jointe soit respectée ....

13test-comptage.zip (23.79 Ko)

Bonjour

Essayes ceci

Range("H2") = "Nombre de lignes : " & Application.Subtotal(103, Columns("F")) - 1

Extrait de l'aide pour SOUS.TOTAL()

Pour les constantes no_fonction de 101 à 111, la fonction SOUS.TOTAL ignore les valeurs des lignées masquées au moyen de la commande Masquer du sous-menu Ligne du menu Format). Utilisez ces constantes pour obtenir uniquement le sous-total des numéros non masqués dans une liste.

En effet, ça fonctionne parfaitement. Je l'ai même adapté à ma colonne B (avec un -2 en fin de ligne).

J'avais essayé avant ton post la fonction Subtotal mais je n'avais apparemment pas compris comment fonctionnait la syntaxe.

Encore un grand merci Banzai et à bientôt ...

Rechercher des sujets similaires à "bug total lignes visibles lieu"