Fonction ne donne pas le résultat esompté

Fermé
Jaynino - 16 juin 2016 à 17:45
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 16 juin 2016 à 17:54
Bonjour,
J'ai une macro pourtant simple... Mais je fais face à un problème qui ne s'était jamais présenté à moi... Et bon sang que c'est énervant. J'en jetterais presque mon ordi par la fenêtre !!!

J'ai le code suivant (par exemple)

ActiveSheet.Cells(1, 1).Select
MsgBox (Application.WorksheetFunction.CountA(Rows(ActiveCell.Row)))

Et le countA me renvoi 0 alors que mes lignes ne sont pas vides...

Par ailleurs et je ne sais pas si c'est lié, si je ne met pas ActiveSheet avant Cells(1, 1).Select, ça bug... (erreur d'exécution '1004'...

J'en perd la boule... Help please.

Merci.
Bonne soirée.

1 réponse

Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
16 juin 2016 à 17:51
Bonjour,

Et avec ce code-ci ?
ActiveSheet.Cells(1, 1).Select 
MsgBox (Application.WorksheetFunction.CountA(ActiveCell))


Et je ne rencontre pas de problème en exécutant sans le "ActiveSheet"...
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
Modifié par Arkana0 le 16/06/2016 à 17:58
Au passage, tu gagneras énormément de temps d'exécution en préférant la forme
Cells(i,j)
,avec i et j des variables que tu incrémentes ou décrémentes, plutôt que d'utiliser des Select.

Pour illustrer :
i = 1
Do
MsgBox(Application.WorksheetFunction.CountA(Cells(i,1))
i = i+1
Loop while (condition)

et
Cells(1,1).Select
Do
MsgBox(Application.WorksheetFunction.CountA(ActiveCell))
ActiveCell.Offset(1,0).Select
Loop while (condition)

Sont deux codes faisant strictement la même chose, mais le premier est nettement plus rapide à l'exécution que le second.
0