Si vous lancez cette procédure sous 2007 et postérieurs :
vous obtiendrez une Erreur d’exécution’6’ : Dépassement de capacité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub Dénombrer() MsgBox Worksheets(1).Cells.Count End Sub
Pourquoi ?
Parce que, comme précisé dans l’aide, la propriété Count de l’objet Range renvoie une valeur de type Long qui représente le nombre d’objets de la collection.
Hors les variables numériques de type long sont limitées en entiers positifs à 2 147 483 648.
Une Feuille de calcul Excel à partir de 2007 comprenant plus de 17 milliards de cellules, on se heurte à un dépassement de capacité et donc à un plantage.
Il faut à partir de cette version utiliser la propriété CountLarge de l’Objet Range qui, elle retourne un variant et ne pose donc pas de problème.
La propriété count a été retenue sous 2007 pour la rétrocompatibilité, mais des problèmes verront surement le jour dans certains codes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub DénombrerLarge() MsgBox Worksheets(1).Cells.CountLarge End Sub
En effet la propriété Count de l’Objet Range est opérationnelle sous 2007 et postérieurs tant que l’on se situe dans la limite du Long.
CountLarge est toujours opérationnelle sous 2007 et postérieurs, par contre elle ne peut-être employée sur un classeur à enregistrer sous une version antérieure car elle provoquera immanquablement une erreur d’exécution ‘438’ : propriété ou méthode non gérée par cet objet… Donc pas simple à gérer.
Partager