Problème pour compter le nombre de lignes d'une feuille

SERIEUXETCOOL

XLDnaute Occasionnel
Bonjour le Forum,

Pour compter le nombre de lignes utilisées d'une feuille Excel, j'utilise le code suivant :

Code:
Dim n As Long
n = ActiveSheet.UsedRange.Rows.Count 'Compte le nombre de lignes dynamiques
MsgBox "Le nombre de lignes actuel est de " & n

Ça fonctionne très bien. Mais je rencontre un cas ou je n'arrive pas à compter le nombre de lignes.

Dans une feuille Excel placez les 4 valeurs suivantes :

Range("U5")=50
Range("U6")=1
Range("U12")=0,001
Range("U14")=1

Ensuite placez ce code dans le module "ThisWorkBook"

Voici le code complet ( code à placer dans "ThisWorkBook") :

Code:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Application.ScreenUpdating = False 'Désactive l'affichage
Application.DisplayAlerts = False 'Désactive les alertes

Dim n As Long, Début As Long, Fin As Long

If Target.Address = Range("U5").Address Or Target.Address = Range("U6").Address Or Target.Address = Range("U12").Address Or Target.Address = Range("U14").Address Then

Début = (Range("U5") / Range("U12")) + 4
Fin = Début + (Range("U6") * Range("U14") / Range("U12"))

n = ActiveSheet.UsedRange.Rows.Count 'Compte le nombre de lignes dynamiques
MsgBox "Le nombre de lignes actuel est de " & n
Range("B10:Q" & n + 4).Clear
MsgBox "Après suppréssion de certaines lignes, ce nombre vaut maintenant " & n

Dim Tableau() As Variant
Dim i As Long
ReDim Tableau(1 To Fin - Début + 1, 1 To 16) As Variant 'On peut maintenant redimensionner le tableau dynamique (i Lignes et 4 colonnes dans ce cas la)

For i = 1 To Fin - Début + 1 'On parcours maintenant l'intégralité des points se trouvant à l'intérieur de la maille circulaire

        Tableau(i, 1) = 10 'On remplit le tableau dynamique comme on l'entends (Pour le maillage circulaire, seule 2 colonnes suffisent)
        Tableau(i, 2) = 10
        Tableau(i, 3) = 10
        Tableau(i, 4) = 10
        Tableau(i, 5) = 10
        Tableau(i, 6) = 10
        Tableau(i, 7) = 10
        Tableau(i, 8) = 10
        Tableau(i, 9) = 10
        Tableau(i, 10) = 10
        Tableau(i, 11) = 10
        Tableau(i, 12) = 10
        Tableau(i, 13) = 10
        Tableau(i, 14) = 10
        Tableau(i, 15) = 10
        Tableau(i, 16) = 10
Next i

Range(Cells(5, 2), Cells(UBound(Tableau, 1) + 4, UBound(Tableau, 2) + 1)) = Tableau 'On transfère les éléments du tableau dans la feuille de calcul

End If

Application.ScreenUpdating = True 'Désactive l'affichage
Application.DisplayAlerts = True 'Désactive les alertes

End Sub


En gros j'ai un tableau avec des valeurs qui sont injectées dans la feuille Excel. J'ai donc un certain nombre de lignes. Je supprime ensuite quelques lignes, et j'aimerais pouvoir compter le nouveau nombre de lignes présent sur la feuille. Et ben c'est toujours le même nombre de lignes alors que ça ne le devrait pas.

Quelqu'un peut il m'aiguiller à savoir pourquoi le nombre de lignes ne change t'il pas malgré que je supprime des lignes ???

Bien cordialement,

André
 

Discussions similaires

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth