compter les lignes vides

alfazoulou

XLDnaute Occasionnel
Bonjour à tous.
j'ai trouvé sur le forum ne discussion qui pouvait régler mon problème, à savoir, à partir d'une cellule donnée, remonter jusqu'à la prochaine cellule non vide, et écrire dans une autre cellule le nombre de lignes vides.
le code tant le suivant
Dim P As Range
If Application.CountBlank(Range("A1:A46")) Then
For Each P In Range("A1:A46").SpecialCells(xlCellTypeBlanks).Areas
P(1).Offset(0, 1).Value = P.Count
Next P
End If
mon soucis c'est que je voudrais le mettre dans l'événement change de la feuille afin que ma cellule soit toujours renseignée en temps réel...Sauf que le code n'arrête pas de s'exécuter.
Si quelqu'un sait pourquoi...
merci d'avance pour vos réponses
 

job75

XLDnaute Barbatruc
Re : compter les lignes vides

Bonjour,

Dans une macro évènementielle, si l'on crée justement l'évènement qui la déclanche (Change par exemple), la macro se relance, d'où bouclage.

Il faut donc désactiver l'action des évènements pendant l'exécution de la macro, en écrivant en début de macro :

Application.EnableEvents = False

Et impérativement en fin de macro :

Application.EnableEvents = True

A+
 
Dernière édition:

alfazoulou

XLDnaute Occasionnel
Re : compter les lignes vides

Bonjour,

Dans une macro évènementielle, si l'on crée justement l'évènement qui la déclanche (Change par exemple), la macro se relance, d'où bouclage.

Il faut donc désactiver l'action des évènements pendant l'exécution de la macro, en écrivant en début de macro :

Application.EnableEvents = False

Et impérativement en fin de macro :

Application.EnableEvents = True

A+
Merci pour ta réponse
 

alfazoulou

XLDnaute Occasionnel
Re : compter les lignes vides

Merci job 75 mais malheureusement ça ne fonctionne pas. j'ai sans doute fait une erreur d'écriture dans mon code ci dessous.

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Dim P As Range

If Range("G54").Formula = "=SUM(G23:G53)" And Application.CountBlank(Range("B51:B64")) Then
For Each P In Range("B51:B64").SpecialCells(xlCellTypeBlanks).Areas

Range("B65").Value = P.Count
Next P
End If

If Range("G60").Formula = "=SUM(G22:G58)" And Application.CountBlank(Range("B50:B56")) Then
For Each P In Range("B50:B56").SpecialCells(xlCellTypeBlanks).Areas

Range("B65").Value = P.Count
Next P
End If

Application.EnableEvents = True
End Sub
 

alfazoulou

XLDnaute Occasionnel
Re : compter les lignes vides

Petite précision;
En fait le code fonctionne correctement jusqu'à ce que n importe quelle autre macro se déclenche.
Par l'intermédiaire d'un userform par exemple.
Par contre s j'affecte le même code à un bouton, ça marche bien et ça continue à bien fonctionner quand ma feuille change... jusqu'à un nouveau blocage après l'exécution d'une autre macro.
Je crois que ça doit pas être très clair mais le problème c'est que je n'arrive pas à zipper mon fichier pour le joindre.
Si quelqu'un pouvez m'aider...
 

Discussions similaires

Réponses
4
Affichages
644
Réponses
12
Affichages
592

Statistiques des forums

Discussions
312 548
Messages
2 089 494
Membres
104 186
dernier inscrit
SEven22