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

NBVAL sur une palge variable

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

La braise

XLDnaute Occasionnel
Bonjour à tous,

Une petite question (toute bête) qui me bloque dans ma macro :

Je souhaite écrire en vba la formule suivante : =NBVAL("a5:a" & nblignes)

J'ai essayé :
ActiveCell.FormulaR1C1 = "=COUNTA(range("a5:a" & nblignes)"
mais ça ne marche pas...

Si quelqu'un a une idée je suis on ne peut plus preneur. 🙂

Question subsidiaire :
Je souhaite associer ce résultat à une variable.
Pour cela je sélectionne une cellule, fait le calcul dedans, affecte le résultat à une variable et vide la cellule.
A mon avis c'est pas le plus rapide... 😕

Je cherche un truc du genre :
mavariable = Application.WorksheetFunction.counta(range("a5:a" & nblignes)

d'avance merci pour votre aide à tous.
 
Re : NBVAL sur une palge variable

Salut La Braise,
voici un exemple qui pourrait remplir ta demande. Je t'ai commenté les lignes. En le faisant de cette façon, tout ce fait dans VBA. Pas besoin de remplir une cellule, de faire le calcul, et de la vider par la suite. La variable NombreValeurs le fait implicitement mais directement dans VBA.

Code:
Sub test()

Dim PremiereLigne As Long, DerniereLigne As Long, NombreValeurs As Long

Application.ScreenUpdating = False

PremiereLigne = 5 'Détermine ta première ligne. Dans ton exemple, c'est la ligne 5 donc j'ai repris la même ligne
DerniereLigne = Cells(65536, 1).End(xlUp).Row 'Trouve la dernière ligne utilisée dans la colonne A
'DerniereLigne = Cells(5, 1).End(xlDown).Row    Une autre variante pour la même chose
NombreValeurs = DerniereLigne - PremiereLigne + 1 'Fait le calcul pour savoir le nombre de valeurs

End Sub

Bonne continuité,

Étienne
 
Re : NBVAL sur une palge variable

Merci pour ta réponse mais cela ne fait pas un calcul de NBVAL.

Ce dont j'ai besoin c'est de connaitre :
NBVAL(palge variable)
la plage étant range("A5:a" & dernière ligne)

PS : je sais obtenir la dernière ligne.

Si quelqu'un a une idée...
 
Re : NBVAL sur une palge variable

j'ai trouvé pour la formule :

ActiveCell.FormulaR1C1 = "=COUNTa(R[3]C:R" & nblignes - 1 & "C)"

et ça marche ! 🙂


Néanmoins est ce que quelqu'un sait transformer cette formule pour obtenir :

variable = "=COUNTa(R[3]C:R" & nblignes - 1 & "C)"

du genre mavariable = Application.WorksheetFunction.counta ...


D'avance merci pour votre aide.
 
Re : NBVAL sur une palge variable

Re,
si je comprends bien, ce que tu cherches à obtenir est le nombre de valeur comprise dans ta plage. Si on prend comme première hypothèse qu'il ne peut y avoir qu'une seule valeur par cellule, alors la cellule A5 représente la première valeur, A6 la 2e valeur, A7 la 3e valeur, etc...
NBVAL calcule le nombre de valeurs dans une plage.

Donc, si tu calcules le nombre de ligne entre le début de ta plage et la fin de ta plage, tu arrives à déterminer le nombre de valeurs comprises dans la plage.

Si tu veux avoir dans une cellule le résultat, tu n'as qu'à faire quelque chose comme ceci :

Code:
Activecell.Value = NombreValeurs

Alors, si tu fais ceci :

Code:
Sub test()

Dim PremiereLigne As Long, DerniereLigne As Long, NombreValeurs As Long

Application.ScreenUpdating = False

PremiereLigne = 5 
DerniereLigne = Cells(65536, 1).End(xlUp).Row
NombreValeurs = DerniereLigne - PremiereLigne + 1 
Activecell.Value = NombreValeurs
End Sub

Tu peux également ajouter ce code dans un événement attribué à la feuille en particulier et ainsi créer une macro événementielle qui va calculer automatiquement le nombre de valeurs. Du genre

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Le principe du worksheet function est de reproduire une fonction Excel qui est déjà programmée. Plutot que d'utiliser une fonction déjà toute faite, on peut la modifier par VBA de manière à remplir le besoin le plus efficacement possible et le plus rapidement possible, tout en enlevant du calcul inutile dans Excel.

Cordialement,

Étienne
 
Re : NBVAL sur une palge variable

Re La braise, le forum,

Avec la formule WorksheetFunction, je procéderais comme ceci :

Code:
DerniereLigne = Cells(65536, 1).End(xlUp).Row
NombreValeurs = Application.WorksheetFunction.CountA(Range("A5:A" & DerniereLigne))

Bonne fin de journée !

Étienne
 
Re : NBVAL sur une palge variable

Bonsoir tdenfert

tdenfert à dit:
Pourquoi ne pas compter toute la colonne $a:$a et retrancher nbval de a1 à a4
Pour éviter des calculs inutiles (et pour la concision)

Et s'il s'agit de dénombrer toutes les valeurs de la colonne "A" sauf les 4 premières, on peut aussi écrire :
Code:
X = WorksheetFunction.CountA([A1].Resize([A65536].End(xlUp).Row - 4))

A plus
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
665
Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…