XL 2010 Compter COL. Vid, 1 seul et+

Imotep44

XLDnaute Nouveau
Bonsoir,

Je vous poste ce message pour vous demander de m'aider dans mon fichier pour les
questions suivantes :

1e question, je veux compter dans un tableau remplis de chiffre
- le nombre de colonne vide, de colonne avec 1 seul chiffre et de colonne avec 2 chiffres ou plus.

2e question, si c'est possible de déterminer le max de "suite" (2 colonnes et + en contigus) des colonnes
vides, 1 nombre et de 2 nombre+

Merci à vous
 

Fichiers joints

riton00

XLDnaute Occasionnel
Bonjour

Réponse première question
1e question, je veux compter dans un tableau remplis de chiffre
- le nombre de colonne vide, de colonne avec 1 seul chiffre et de colonne avec 2 chiffres ou plus.
Nombre de ligne vide =NB.VIDE(B5:R5) puis tirer vers le bas
Nombre de 1 chiffre =NB.SI(B5:R5;">=1")-NB.SI(B5:R5;">=10") puis tirer vers le bas
Nombre de 2 chiffres =NB.SI(B5:R5;">=10")-NB.SI(B5:R5;">=1000") puis tirer vers le bas

Slts
 
Dernière édition:

Imotep44

XLDnaute Nouveau
Bonsoir riton00,
Aucune des formules ne marchent. Je pense qu'ils calculent les lignes plutôt
que les colonnes.
cordialement
 

Imotep44

XLDnaute Nouveau
Bonjour,
Je ne sais pas si ma demande a été comprise ?
La réponse de riton00 ne répond pas à ma question.
Voir mon exemple.
merci
 

job75

XLDnaute Barbatruc
Bonjour Imotep44, riton00,

Voyez le fichier joint et ces 2 fonctions VBA relativement simples :
Code:
Function CompteColonne(R As Range, n)
For Each R In R.Columns
    If Application.CountA(R) = n Then CompteColonne = CompteColonne + 1
Next
End Function

Function SuiteMax(R As Range, n)
Dim a(), i%
ReDim a(1 To R.Columns.Count)
If Application.CountA(R.Columns(1)) = n Then a(1) = 1
For i = 2 To UBound(a)
    If Application.CountA(R.Columns(i)) = n Then a(i) = a(i - 1) + 1
Next
SuiteMax = Application.Max(a)
If SuiteMax = 1 Then SuiteMax = 0
End Function
A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Re,

Dans ce fichier (2) j'ai complété le cas n = 2 quand il y a plus de 2 nombres dans une colonne :
Code:
Function CompteColonne(R As Range, n)
For Each R In R.Columns
    If Application.CountA(R) = n Then CompteColonne = CompteColonne + 1
    If n = 2 Then If Application.CountA(R) > n Then CompteColonne = CompteColonne + 1
Next
End Function

Function SuiteMax(R As Range, n)
Dim a(), i%
ReDim a(1 To R.Columns.Count)
If Application.CountA(R.Columns(1)) = n Then a(1) = 1
If n = 2 Then If Application.CountA(R.Columns(1)) > n Then a(1) = 1
For i = 2 To UBound(a)
  If Application.CountA(R.Columns(i)) = n Then a(i) = a(i - 1) + 1
  If n = 2 Then If Application.CountA(R.Columns(i)) > n Then a(i) = a(i - 1) + 1
Next
SuiteMax = Application.Max(a)
If SuiteMax = 1 Then SuiteMax = 0
End Function
Edit : pour la fonction SuiteMax il manquait la 5ème ligne, j'ai corrigé.

A+
 

Fichiers joints

Dernière édition:

Imotep44

XLDnaute Nouveau
Bonsoir Job75,
J'ai une nouvelle requête sur la question "colonne de suite" pour 2 nombres et+ (2e question dans le fichier) :

A) Partie en jaune : J'aimerais distinguer 2nb et + avec 2 nombres, 3nb lorsque c'est une plage de 3 lignes (L5 à L7), ensuite y ajouter
4nb lorsque c'est une plage de 4 lignes (L5 à L8), ensuite y ajouter 5nb pour 5 lignes (L5 à L9) etc...

B) Partie en vert : La même question mais en prenant en compte les nombres qui sont en contigus sur les cellules
(à la verticale donc).

Voir tableau
merci pour votre aide précieuse
bonne nuit
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour Imotep44, le forum,

Je viens de corriger mon post #7 : il manquait la 5ème ligne de la fonction SuiteMax.

Pour vos problèmes A) et B) voyez ce fichier (3) et les fonctions SuiteMaxBis et SuiteMaxContigu, cette dernière utilise la fonction MaxContigu.

Une remarque pour terminer : toutes mes solutions fonctionnent avec des nombres ou des textes dans le tableau source mais il faut s'assurer qu'il n'y a pas d'espaces dans les cellules (commande Rechercher).

Bonne journée.
 

Fichiers joints


Haut Bas