XL 2019 Fonction CountIF

Pieerre69

XLDnaute Junior
Bonjour,

J'ai fais une fonction CountIf pour compter le nombre de ligne contenant le texte "V".

VB:
nbvert = Application.WorksheetFunction.CountIf(Sheets("Saisie").Range("A" & Rows.Count).End(xlUp).Row - 2, "=V")

Problème : VB me renvoie l'erreur "Objet requis" lors de l'éxécution du projet.
Pour contexte : j'ai déclarer nbvert as integer et il n'y a qu'une seule ligne.. Je ne sais pas si ces paramètres peuvent jouer, c'est la première fois que j'utilise cette fonction!
Ah et le "-2" me permet de prendre en compte que j'ai deux lignes d'en-têtes. Donc 3 lignes remplies - 2 en-têtes
Merci pour votre aide
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

La feuille "Saisie" existe-t-elle bien ?

Votre Sheets("Saisie").Range("A" & Rows.Count).End(xlUp) ne renvoie qu'une cellule.
Où est la cellule de départ ?

Un fichier exemple pourrait mieux parler et aider.

Conseils : valoriser une variable objet 'Plage' par exemple avant de l'utiliser. Mettez votre dernière ligne en variable également, servez vous de la fenêtre d'exécution (CTRL+G) pour vérifier le contenu.

Apprenez à vous servir des outils de débogage du menu Affichage (Fenêtre Variables locales', Fenêtre espion, pile des appels etc.)

VB:
Dim Plage As Range

Dim Plage As Range
Dim DerLig As Long
With Sheets("Saisie")
 
   DerLig = Sheets("Saisie").Range("A" & Rows.Count).End(xlUp).Row
   Debug.Print "Derniere ligne : ", DerLig
 
   Set Plage = .Range("A3:A" & DerLig - 2) ' plantera si rien en A3 et dessous
   Debug.Print "Plage : ", Plage.Address

End With

cordialement

[Edit] ben j'avais oublié d'effacer le .Row-2 ! Quel drame !
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pierre, Roblochon,
La ligne :
VB:
Sheets("Saisie").Range("A" & Rows.Count).End(xlUp).Row - 2
ne renvoie pas une plage mais un nombre. La dernière ligne occupée -2 dans la colonne A.
Donc tentez :
Code:
nbvert = Application.CountIf(Sheets("Saisie").Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row - 2), "*=V*")
Si la dernière ligne occupée est 10 alors la plage sera A1:A8
Mettez aussi les * car si une cellule commence par = c'est une formule et il ne trouvera pas.
 

Pieerre69

XLDnaute Junior
Ok je viens de saisir.. C'est vrai que faire un NB.SI sur autre chose qu'une plage c'est compliqué, voir impossible !

Je vais continuer de plancher avant de revenir vers vous si je ne trouve rien.. Merci de m'avoir fait tiqué la dessus en tout cas j'étais bloqué
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 243
Membres
103 497
dernier inscrit
JP9231