Petite aide pour comptage

nak

XLDnaute Occasionnel
Bonjour à tous,

J'utilise le code suivant pour compter le nombre de valeur présent dans une colonne :
Private Sub Nombre_valeur()
'Lettre Colonne Variable suivant nom de l'entête
ColDef = Split(Sheets("Défauts").Range("A1:ZZ1").Find("Lib_Défaut", LookAt:=xlWhole).Address, "$")(1)
'Formule pur compter
Sheets("Formulaire").Range("O23").Value = WorksheetFunction.CountA(Sheets("Défauts").Range(ColDef & "2", Sheets("Défauts").Cells(Rows.Count, ColDef).End(xlUp)))
End Sub

Cette fonction me pose un problème lorsque la colonne est vide, le "End(xlUp)" me compte l'entête.

Avez-vous la solution SVP ?

Merci

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Petite aide pour comptage

Bonjour Nak, bonjour le forum,

Peut-Être comme ça :
Code:
Private Sub Nombre_valeur()
Dim CEL As Range
'Lettre Colonne Variable suivant nom de l'entête
ColDef = Split(Sheets("Défauts").Range("A1:ZZ1").Find("Lib_ Défaut", LookAt:=xlWhole).Address, "$")(1)
'Formule pur compter
With Sheets("Défauts")
    Set CEL = IIf(.Cells(Application.Rows.Count, ColDef).End(xlUp).Row = 1, .Cells(2, ColDef), .Cells(Application.Rows.Count, ColDef).End(xlUp))
    Sheets("Formulaire").Range("O23").Value = Application.WorksheetFunction.CountA(.Range(ColDef & "2", CEL))
End With
End Sub
 

job75

XLDnaute Barbatruc
Re : Petite aide pour comptage

Bonjour nak, hello Robert,

Hum, à problème simple solution simple, non ?
Code:
Sub Nombre_valeur()
Dim c As Range
Set c = Sheets("Défauts").[1:1].Find("Lib_ Défaut", , xlValues, xlWhole)
If Not c Is Nothing Then _
  Sheets("Formulaire").[O23] = Application.CountA(c.EntireColumn) - 1
End Sub
Nota : pour "Lib_ Défaut" c'est votre code nak, vous êtes sûr qu'il y a un espace ???

A+
 

job75

XLDnaute Barbatruc
Re : Petite aide pour comptage

Re,

Si maintenant votre code est sacré (?) il suffit d'ajouter (2) après End(xlUp) :
Code:
Private Sub Nombre_valeur()
'Lettre Colonne Variable suivant nom de l'entête
ColDef = Split(Sheets("Défauts").Range("A1:ZZ1").Find("Lib_ Défaut", LookAt:=xlWhole).Address, "$")(1)
'Formule pur compter
Sheets("Formulaire").Range("O23").Value = WorksheetFunction.CountA(Sheets("Défauts").Range(ColDef & "2", Sheets("Défauts").Cells(Rows.Count, ColDef).End(xlUp)(2)))
End Sub
A+
 

Discussions similaires

Réponses
2
Affichages
154
Réponses
12
Affichages
574

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado