Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2010, 19h17   #1
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 682
Points : 4 682
Par défaut Pourquoi Worksheets(1).Cells.Count retourne-t-elle un message d’erreur sous Excel 2007 et suivants.

Si vous lancez cette procédure sous 2007 et postérieurs :

Code :
1
2
3
4
5
Sub Dénombrer()
 
   MsgBox Worksheets(1).Cells.Count
 
End Sub
vous obtiendrez une Erreur d’exécution’6’ : Dépassement de capacité.

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.

Code :
1
2
3
4
5
Sub DénombrerLarge()
 
   MsgBox Worksheets(1).Cells.CountLarge
 
End Sub
La propriété count a été retenue sous 2007 pour la rétrocompatibilité, mais des problèmes verront surement le jour dans certains codes.
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.
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est actuellement connecté   Envoyer un message privé Réponse avec citation 50
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h29.


 
 
 
 
Partenaires

Hébergement Web