Compter nombre de cellules non vides entre deux vides

Bonjour à tous,

Je rencontre un problème pour automatiser une procédure dans un fichier excel ayant beaucoup de lignes.

Ce que je souhaite faire est de compter les cellules pleines entre deux cellules vides.

Ex :

[cellule vide]

valeur 1

valeur2

valeur 3

[cellule vide]

valeur 4

valeur 5

[cellule vide]

valeur 6

valeur 7

valeur 8

valeur 9

[cellule vide]

Ma colonne se présente comme ci-dessus, et j'aimerais en VBA pouvoir créer une fonction qui me renvoie, soit dans les cases vides ou soit dans une colonne à côté, le nombre de lignes entre deux cellules vides pour chaque série de valeurs.

Dans l'exemple ci-dessus, je souhaite obtenir donc comme résultat : 3, 2, 4 (correspondant respectivement aux nombres de valeurs ou lignes entre les cellules vides)

Est-ce que quelqu'un a une idée de comment automatiser l'opération? J'ai mis en PJ, un fichier pour illustrer le problème.

J'ai peur que cela soit difficile à faire par une fonction VBA car le résultat retourné doit être différent à chaque fois (renvoi matriciel?).

Merci à tous pour votre aide.

Hubert41

Je ne sais pas si le post est toujours d'actualité puisqu'il date un peu.

si oui, tu peux essayer ça:

Sub comptvide()

Dim NB As Integer

NB = 0

For i = 3 To 29

If Cells(i, 2) <> "" Then

NB = NB + 1

Else

Cells(i, 3).Value = NB

NB = 0

End If

Next i

End Sub

En remplaçant 29 par le numéro de la dernière ligne que tu souhaite traiter.

Mais ca veut dire que soit tu dois changer la valeur a chaque fois que la dernière ligne change, soit tu met un nombre très élevé mais tu va avoir plein de 0 dans les cases inutilisées, et la procédure mettra plus de temps.

l'autre solution que je trouve mieux c'est d'arrêter la macro si deux cellules adjacentes sont vides.

Cela implique qu'il n'y ait qu'une seule cellule vide entre chaque liste de valeur.

Et dans ce cas le code serait:

Sub comptvide()

Dim NB As Integer

NB = 0

For i = 3 To 65536

If Cells(i, 2) <> "" Then

NB = NB + 1

Else

If Cells(i + 1, 2) <> "" Then

Cells(i, 3).Value = NB

NB = 0

Else

Cells(i, 3).Value = NB

NB = 0

Exit Sub

End If

End If

Next i

End Sub

Dans la version 2010 de Excel, on peut changer 65536 par 1048576

bonjour

en attendant une reponse en vba

411hubert-41.zip (6.95 Ko)

cordialement

Bonjour tulipe_3 et 11235813,

Merci à vous deux pour vos réponses, vos deux méthodes sont très efficaces et c'est exactement ce que je recherchais.

Bonne journée

Hubert41

Bonjour,

Je déterre ce post un peu ancien, au cas où quelqu'un traînerait par là aujourd'hui...

Je cherche en fait à faire exactement le contraire d'Hubert, c'est-à-dire compter le nombre de cellules nulles entre deux valeurs non nulles.

J'ai essayé le code suivant, mais sans succès : toute ma colonne C se remplit de 0...

Sub comptnonvide()

Dim NB As Long

NB = 0

For i = 1 To 35192

If Cells(i, 2) = "" Then

NB = NB + 1

Else

Cells(i, 3).Value = NB

NB = 0

End If

Next i

End Sub

EDIT : En fin de compte je viens de réaliser que les pas de temps des dates rentrés dans ma première colonne ne sont pas réguliers, donc ça devient beaucoup plus compliqué... En effet, l'objectif est de calculer les "durées" durant lesquelles les valeurs de la colonne 2 sont nulles, il ne suffit plus de compter le nombre de cellule et de multiplier par une constante.

Si quelqu'un a une idée, je suis preneur...

Merci beaucoup à vous en tous cas, je vais quand même continuer à chercher !

Rechercher des sujets similaires à "compter nombre vides entre deux"