Calcul nb maxi de cellule vide d'une colonne
Bonsoir tout le monde,
je recherche une formule qui me permettrai de connaitre le nombre maxi de cellules vides dans une colonne. Par contre , sachant que le tableau est mis a jour quotidiennement il ne faut pas tenir compte de l'ecart entre la derniere cellule pleine et le 31/12/2015 par exemple. J'espere que je me suis bien fait comprendre. je joints un exemple pour que ça soit plus parlant.
Bonsoir je fil, bonsoir le forum,
Par formule je ne sais pas faire, alors une proposition VBA :
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim NV As Integer 'déclare la variable NV (Nombre de cellules Vides)
Dim Max As Integer 'déclare la variable Max (Maxumum de cellules vides)
NV = 1 'initialise le nombre de cellules vides NV
Set O = Sheets("Feuil1") 'définit l'aonglet 0
DL = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de l'onglet O
TC = O.Range("B1:B" & DL) 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucles sur toutes les ligne du tableau TC (en partant de la seconde)
If TC(I - 1, 1) = "" And TC(I, 1) = "" Then 'condition : si la cellule et celle au dessus sont vides
NV = NV + 1 'invrément le nombre de cellules vides NV
If NV > Max Then Max = NV 'si NV est supérieur à Max, Max devient NV
Else 'sinon
NV = 1 'réinitialise NV
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
MsgBox Max 'affiche max
End SubJames007 a écrit :Bonsoir,
Ci-joint ton fichier test ...
Pas mal votre formule mais le soucis et que je n'arrive pas à la faire fonctionner sur le tableau d'origine.
Et si le nb de cellule vide consecutive augmente dans 15 jours je ne m'en apercevrai? Elle se met a jour automatiquement à partir de la dernière cellule pleine peut etre?
ThauThème a écrit :Bonsoir je fil, bonsoir le forum,
Par formule je ne sais pas faire, alors une proposition VBA :
Sub Macro1() Dim O As Object 'déclare la variable O (Onglet) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim NV As Integer 'déclare la variable NV (Nombre de cellules Vides) Dim Max As Integer 'déclare la variable Max (Maxumum de cellules vides) NV = 1 'initialise le nombre de cellules vides NV Set O = Sheets("Feuil1") 'définit l'aonglet 0 DL = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de l'onglet O TC = O.Range("B1:B" & DL) 'définit le tableau de cellules TC For I = 2 To UBound(TC, 1) 'boucles sur toutes les ligne du tableau TC (en partant de la seconde) If TC(I - 1, 1) = "" And TC(I, 1) = "" Then 'condition : si la cellule et celle au dessus sont vides NV = NV + 1 'invrément le nombre de cellules vides NV If NV > Max Then Max = NV 'si NV est supérieur à Max, Max devient NV Else 'sinon NV = 1 'réinitialise NV End If 'fin de la condition Next I 'prochaine ligne de la boucle MsgBox Max 'affiche max End Sub
Alors la ça marche peut etre mais je ne suis pas assez caler pour savoir ou copier cette formule!!! lol desolé vous etes trop fort pour moi
Bonjour @ tous,
Salut James007, Salut ThauThème,
sur le fichier de l'ami James007 avec un nom de champ dynamique.
la formule est matricielle, il faut la valider par la combinaison des touches Ctrl+Shift+Enter, après une validation réussie tu vas voir apparaitre des {} au début et à la fin de la formule.
@ + +
R@chid a écrit :Bonjour @ tous,
Salut James007, Salut ThauThème,
sur le fichier de l'ami James007 avec un nom de champ dynamique.
la formule est matricielle, il faut la valider par la combinaison des touches Ctrl+Shift+Enter, après une validation réussie tu vas voir apparaitre des {} au début et à la fin de la formule.
@ + +
OK super je viens d'essayer ça marche niquel!! Vous etes des vrais chefs. Moi qui me prenait la tete depuis plus de 3 mois!!!
Bonsoir à tous,
@Rachid ... merci ... tu as raison ... j'aurais dû penser à rendre la plage dynamique ...