Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Compter des cellules vides selon critères

rounil09

XLDnaute Occasionnel
Bonjour,

Je n’arrive pas à me sortir de comptages de cellules vides (par formules de préférence, sinon par VBA).
Il s’agit de compter des cellules vides dans chaque ligne d’un tableau selon 2 critères :
. Nombre de cellules vides jusqu’à la première cellule non vide.
. Nombre maximum de cellules vides entre plusieurs cellules non vides.

Je joins un fichier explicatif

Merci par avance pour votre aide.
 

Pièces jointes

  • NB_Cel_Vides.xlsm
    17.9 KB · Affichages: 45

JHA

XLDnaute Barbatruc
Bonjour à tous,

Pour l'écart final par formule:
Code:
=SI(SOMME($B3:$AK3)>0;COLONNE()-COLONNE(INDEX($B3:$AK3;EQUIV(9^9;$B3:$AK3;1)));COLONNE()-2)
Copier vers le bas
Concernant l'écart max(), pas encore trouvé.

JHA
 

Tara-tata

XLDnaute Nouveau
Bonsoir
deux fonctions perso à tester

Bonjour, je suis nouvelle sur le forum.
J'aimerais également calculer l'écart max de cellules vides mais dans une colonne. Pouvoir avoir l'écart max et l'écart final. Je ne comprends pas la formule dans le tableau pour Rounil09. Est il possible d'avoir la formule en code texte et adapté aux colonnes ?
Merci beaucoup.
 

job75

XLDnaute Barbatruc
Bonjour Tara-tata, bienvenue sur XLD, bonjour le forum,

Pour l'étude par lignes de ce fil j'ai modifié la solution VBA de sousou dans le 1er fichier joint :
Code:
Function EcartFinal%()
Application.Volatile
Dim c As Range, n%
Set c = Application.Caller
For n = 0 To c.Column - 3
    If c(1, -n) <> "" Then Exit For
Next
EcartFinal = n
End Function

Function EcartMax%()
Application.Volatile
Dim c As Range, n%, Ecart%
Set c = Application.Caller.Offset(, -1)
For n = 0 To c.Column - 3
    If c(1, -n) = "" Then Ecart = Ecart + 1
    If c(1, -n) <> "" Then EcartMax = IIf(Ecart > EcartMax, Ecart, EcartMax): Ecart = 0
Next
If EcartMax = 0 And c(1, 0) = "" Then EcartMax = n
End Function
Pour l'étude par colonnes que vous demandez voyez le 2ème fichier joint et le code adapté à cette transposition :
Code:
Function EcartFinal%()
Application.Volatile
Dim c As Range, n&
Set c = Application.Caller
For n = 0 To c.Row - 3
    If c(-n) <> "" Then Exit For
Next
EcartFinal = n
End Function

Function EcartMax%()
Application.Volatile
Dim c As Range, n&, Ecart&
Set c = Application.Caller.Offset(-1)
For n = 0 To c.Row - 3
    If c(-n) = "" Then Ecart = Ecart + 1
    If c(-n) <> "" Then EcartMax = IIf(Ecart > EcartMax, Ecart, EcartMax): Ecart = 0
Next
If EcartMax = 0 And c(0) = "" Then EcartMax = n
End Function
A+
 

Pièces jointes

  • NB_Cel_Vides_Lignes(1).xlsm
    27.2 KB · Affichages: 12
  • NB_Cel_Vides_Colonnes(1).xlsm
    26.8 KB · Affichages: 16

Tara-tata

XLDnaute Nouveau


Bonjour, merci beaucoup pour votre bienvenue et pour votre réponse mais je suis désolée, je ne comprends pas... dans la case, la formule marquée est "=EcartFinal()" et "=EcartMax()". Or, quand je rentre ça à la dernière ligne de la colonne concernée dans mon tableau et avec la colonne sélectionnée, ça me met "#NOM?". Quelle est la formule que je dois rentrer exactement ? Merci beaucoup. Je suis désolée, je ne m'y connais pas vraiment...
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir tout le monde
Comme d'habitude je suis un peu à la traine pour poster ma réponse (manque d’entrainement).
Voir en PJ une version avec 1 formule l'écart final 1 fonction pour l'écart max.

Un peu tard mais tant-pis

A bientôt
Alain
 

Pièces jointes

  • Copie de NB_Cel_Vides.xlsm
    20.6 KB · Affichages: 0
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…