[déplacer VB.NET -> VBA] compte cellules non-vides sans sélection

Résolu
fazpedro
Messages postés
22
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
10 mai 2010
- 15 déc. 2009 à 12:11
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
- 15 déc. 2009 à 16:49
Bonjour, je souhaite compter le nombre de cellules non vides dans une colonne sans avoir à afficher la feuille en question, voici mon code mais qui, lors de l'éxécution, fait "clignoter" la feuille car il montre à chaque fois la feuille !

Merci d'avance.

Sheets("Feuil1").Select
Nb = WorksheetFunction.CountA(Columns("A:A"))
Sheets("MENU").Select
Range("H16") = Nb

Sheets("Feuil1").Select
Nb = WorksheetFunction.CountA(Columns("Z:Z"))
Sheets("MENU").Select
Range("H17") = Nb

6 réponses

PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
15 déc. 2009 à 12:42
VBA !!


application.screenupdating=false
dim nb as long
Sheets("Feuil1").Select
Nb = WorksheetFunction.CountA(Columns("A:A"))
Sheets("MENU").Select
Range("H16") = Nb

Sheets("Feuil1").Select
Nb = WorksheetFunction.CountA(Columns("Z:Z"))
Sheets("MENU").Select
Range("H17") = Nb
application.screenupdating=true


[hr]
3
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
15 déc. 2009 à 12:49
Bonjour,

Suffit peut-être de ne pas utiliser les select .... (pas nécessaire)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
15 déc. 2009 à 12:53
Salut
Quelle feuille fait-il clignoter ? Feuil1 ou Menu ?
C'est dû au fait que tu fais un .Select

Comme expliqué dans l'aide de VBA sur la WorksheetFunction (il te suffisait d'appuyer sur F1), il te suffit de créer une variable Range :
    Dim myRange As Range
    Set myRange = Worksheets("Feuil1").Range("A:A")
    MsgBox Application.WorksheetFunction.CountA(myRange)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
15 déc. 2009 à 14:53
Salut,

autre solution:

dim nb as long
With Sheets("Feuil1")
    Nb = WorksheetFunction.CountA(.Columns("A"))
    Sheets("MENU").Range("H16").Value = Nb
    Nb = WorksheetFunction.CountA(.Columns("Z"))
    Sheets("MENU").Range("H17").Value = Nb
End with



A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fazpedro
Messages postés
22
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
10 mai 2010
1
15 déc. 2009 à 16:10
OK c'est bon avec la méthode de PCPT


Merci encore.

PS : comment faire pour que ce mesage soit mis en résolu ?
je suis très débutant....
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
15 déc. 2009 à 16:49
il est flaggué "résolu" maintenant que tu as validé ma réponse

(son signe distinctif n'est pas "[résolu]....titre" comme certains sites, ici il apparaitra dans les recherches avec une coche verte)

++
0