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 ....
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 ...