Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug ActiveSheet.Columns.count

20 réponses
Avatar
Benoît Marchand [Benead]
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead

10 réponses

1 2
Avatar
michdenis
Vos réflexions m'ont mené jusqu'ici :

Pour Excel 2007, il y a une nouvelle méthode : CountLarge

Dim n As Double
n = ActiveSheet.Cells.CountLarge





"Daniel.C" a écrit dans le message de groupe de discussion :

Bonsoir.
J'ai le même problème, mais seulement pour Cells.Count, avec XL2007
comme avec XL2010. Par contre, rien avec Rows.Count ou Columns.Count
Cordialement.
Daniel

Merci de tes réponses,

Sur le portable du boulot, je n'ai aucun éditeur approuvé et aucune case à
cocher sur cet écran.

Il faut quand même que je te dise que j'ai testé quelques macros, certaines
fonctionnent car elles ne font pas appel à Cells.Count, Rows.Count ou
Columns.Count. Mais toutes celles qui y font appel plante sur les lignes de
code .Count... Que la ligne soit au début du programme ou en plein milieu...


michdenis a écrit :
Le chemin des options sous Excel 2007 donné hier,
tu remplaces "Trust" ou "Trust Center" par
"Centre de Gestion de la confidentialité"

Pour la version 2003,
Barre des menus / outils / Macros / Sécurité / Onglet "Editeurs approuvés"
et tu coches les 2 cases à cocher dans le bas de la fenêtre




""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de discussion :
Bonsoir,

Malheureusement, je n'ai rien qui ressemble à cela sur la partie de gauche
:

Standard
Formules
Vérification
Enregistrement
Options avancées
Personnaliser
Compléments
Centre de Gestion de la confidentialité
Ressources

Les postes utilisateurs sont très bridés et il se peut que certaines
options soient masquées.
En complément d'information, Cest un master Windows XP SP3 avec le pack
Office Pro avec l'AddIn "Classic Menu Manager (ajout d'un onglet "Menu"
sur le ruban des applications Office simulant les menus d'Office 2003)
Dans Options Excel/Ressources, il y a la possibilité de lancer un
diagnostic mais il faut être administrateur pour le faire... Donc je ne
sais pas si cet outil pourrait de donner une piste.

michdenis a écrit :

| Ce n'est que le début d'exécution de mon application

Ce bout de phrase me met à puce à l'oreille :

Gros bouton office / Options Excel / Section de gauche / l'item
qui se rapproche le plus de "Trust Center" (version anglaise)
Section de droite : Bouton de commande "Trust Center Setting"
As-tu coché l'option faire confiance au projetVBA ?



""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de
discussion : #
Re,

A) Non, car les deux portables sont en version 2007, les packs de
compatibilité sont pour les versions antérieures.

B) Je ne sais pas, en principes les màj déterminent la version exacte, non
?

C) J'ai essayé les deux, format 97-2003 et 2007, cela ne change rien.
Même activesheet.usedrange.columns.count plante, par contre quand je
fait activesheet.usedrange.columns.select sur une feuille non vide,
toute ma plage utilisée est sélectionnée...

Je vais faire par du problème auprès du service technique de ma boite,
mais c'est un truc vraiment bizarre. et quand je dis
activesheet.usedrange.columns.count, c'est pareil avec rows... Ce n'est
que le début d'exécution de mon application, il y a très certainement
d'autres loups.

A+
Benead

michdenis a écrit :


Bonjour Benoît,

Sous Excel 2007,
Ceci ne provoque aucune erreur et retourne bien
16384 colonnes. Une variable déclarée de type integer devrait être
suffisante

'---------------------------------
Sub Test()
Workbooks.Add
MsgBox ActiveSheet.Columns.Count
End Sub
'---------------------------------

A ) As-tu installé le pak de compatibilité sur ton portable
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID”1b3470-3ae9-4aee-8f43-c6bb74cd1466

B ) Est-ce que tous les mises à jour ont été faites ?

C ) Est-ce que ton format de fichier était 2007 ou d'une version
précédente ?


""Benoît Marchand [Benead]"" a écrit dans le
message de groupe
de
discussion : #
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead




Avatar
Benoît Marchand [Benead]
Avec CountLarge, j'ai le message "Cette variable utilise un type
Automation non géré par Visual Basic"

Par contre sur mon portable perso, aucun problème, Excel me retourne
bien le nombre attendu même si le type de variable CountLarge est
"Variant/<Type Variant non géré>

Cela ne pourrait-il pas venir de Windows XP ?

michdenis a écrit :
Vos réflexions m'ont mené jusqu'ici :

Pour Excel 2007, il y a une nouvelle méthode : CountLarge

Dim n As Double
n = ActiveSheet.Cells.CountLarge





"Daniel.C" a écrit dans le message de groupe de discussion :

Bonsoir.
J'ai le même problème, mais seulement pour Cells.Count, avec XL2007
comme avec XL2010. Par contre, rien avec Rows.Count ou Columns.Count
Cordialement.
Daniel


Merci de tes réponses,

Sur le portable du boulot, je n'ai aucun éditeur approuvé et aucune case à
cocher sur cet écran.

Il faut quand même que je te dise que j'ai testé quelques macros, certaines
fonctionnent car elles ne font pas appel à Cells.Count, Rows.Count ou
Columns.Count. Mais toutes celles qui y font appel plante sur les lignes de
code .Count... Que la ligne soit au début du programme ou en plein milieu...


michdenis a écrit :

Le chemin des options sous Excel 2007 donné hier,
tu remplaces "Trust" ou "Trust Center" par
"Centre de Gestion de la confidentialité"

Pour la version 2003,
Barre des menus / outils / Macros / Sécurité / Onglet "Editeurs approuvés"
et tu coches les 2 cases à cocher dans le bas de la fenêtre




""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de discussion :
Bonsoir,

Malheureusement, je n'ai rien qui ressemble à cela sur la partie de gauche
:

Standard
Formules
Vérification
Enregistrement
Options avancées
Personnaliser
Compléments
Centre de Gestion de la confidentialité
Ressources

Les postes utilisateurs sont très bridés et il se peut que certaines
options soient masquées.
En complément d'information, Cest un master Windows XP SP3 avec le pack
Office Pro avec l'AddIn "Classic Menu Manager (ajout d'un onglet "Menu"
sur le ruban des applications Office simulant les menus d'Office 2003)
Dans Options Excel/Ressources, il y a la possibilité de lancer un
diagnostic mais il faut être administrateur pour le faire... Donc je ne
sais pas si cet outil pourrait de donner une piste.

michdenis a écrit :


| Ce n'est que le début d'exécution de mon application

Ce bout de phrase me met à puce à l'oreille :

Gros bouton office / Options Excel / Section de gauche / l'item
qui se rapproche le plus de "Trust Center" (version anglaise)
Section de droite : Bouton de commande "Trust Center Setting"
As-tu coché l'option faire confiance au projetVBA ?



""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de
discussion : #
Re,

A) Non, car les deux portables sont en version 2007, les packs de
compatibilité sont pour les versions antérieures.

B) Je ne sais pas, en principes les màj déterminent la version exacte, non
?

C) J'ai essayé les deux, format 97-2003 et 2007, cela ne change rien.
Même activesheet.usedrange.columns.count plante, par contre quand je
fait activesheet.usedrange.columns.select sur une feuille non vide,
toute ma plage utilisée est sélectionnée...

Je vais faire par du problème auprès du service technique de ma boite,
mais c'est un truc vraiment bizarre. et quand je dis
activesheet.usedrange.columns.count, c'est pareil avec rows... Ce n'est
que le début d'exécution de mon application, il y a très certainement
d'autres loups.

A+
Benead

michdenis a écrit :



Bonjour Benoît,

Sous Excel 2007,
Ceci ne provoque aucune erreur et retourne bien
16384 colonnes. Une variable déclarée de type integer devrait être
suffisante

'---------------------------------
Sub Test()
Workbooks.Add
MsgBox ActiveSheet.Columns.Count
End Sub
'---------------------------------

A ) As-tu installé le pak de compatibilité sur ton portable
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID”1b3470-3ae9-4aee-8f43-c6bb74cd1466

B ) Est-ce que tous les mises à jour ont été faites ?

C ) Est-ce que ton format de fichier était 2007 ou d'une version
précédente ?


""Benoît Marchand [Benead]"" a écrit dans le
message de groupe
de
discussion : #
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead





Avatar
Daniel.C
Bonjour Denis
C'est OK pour moi avec CountLarge. Le problème, c'est à partir de quel
nombre faut-il utiliser CountLarge ? Conclusion :
Excel est infoutu de compter ses cellules et Bill ses dollars.
Cordialement.
Daniel

Vos réflexions m'ont mené jusqu'ici :

Pour Excel 2007, il y a une nouvelle méthode : CountLarge

Dim n As Double
n = ActiveSheet.Cells.CountLarge





"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonsoir.
J'ai le même problème, mais seulement pour Cells.Count, avec XL2007
comme avec XL2010. Par contre, rien avec Rows.Count ou Columns.Count
Cordialement.
Daniel

Merci de tes réponses,

Sur le portable du boulot, je n'ai aucun éditeur approuvé et aucune case à
cocher sur cet écran.

Il faut quand même que je te dise que j'ai testé quelques macros, certaines
fonctionnent car elles ne font pas appel à Cells.Count, Rows.Count ou
Columns.Count. Mais toutes celles qui y font appel plante sur les lignes de
code .Count... Que la ligne soit au début du programme ou en plein milieu...


michdenis a écrit :
Le chemin des options sous Excel 2007 donné hier,
tu remplaces "Trust" ou "Trust Center" par
"Centre de Gestion de la confidentialité"

Pour la version 2003,
Barre des menus / outils / Macros / Sécurité / Onglet "Editeurs approuvés"
et tu coches les 2 cases à cocher dans le bas de la fenêtre




""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de discussion :
Bonsoir,

Malheureusement, je n'ai rien qui ressemble à cela sur la partie de gauche




Standard
Formules
Vérification
Enregistrement
Options avancées
Personnaliser
Compléments
Centre de Gestion de la confidentialité
Ressources

Les postes utilisateurs sont très bridés et il se peut que certaines
options soient masquées.
En complément d'information, Cest un master Windows XP SP3 avec le pack
Office Pro avec l'AddIn "Classic Menu Manager (ajout d'un onglet "Menu"
sur le ruban des applications Office simulant les menus d'Office 2003)
Dans Options Excel/Ressources, il y a la possibilité de lancer un
diagnostic mais il faut être administrateur pour le faire... Donc je ne
sais pas si cet outil pourrait de donner une piste.

michdenis a écrit :

Ce n'est que le début d'exécution de mon application



Ce bout de phrase me met à puce à l'oreille :

Gros bouton office / Options Excel / Section de gauche / l'item
qui se rapproche le plus de "Trust Center" (version anglaise)
Section de droite : Bouton de commande "Trust Center Setting"
As-tu coché l'option faire confiance au projetVBA ?



""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de
discussion : #
Re,

A) Non, car les deux portables sont en version 2007, les packs de
compatibilité sont pour les versions antérieures.

B) Je ne sais pas, en principes les màj déterminent la version exacte, non
?

C) J'ai essayé les deux, format 97-2003 et 2007, cela ne change rien.
Même activesheet.usedrange.columns.count plante, par contre quand je
fait activesheet.usedrange.columns.select sur une feuille non vide,
toute ma plage utilisée est sélectionnée...

Je vais faire par du problème auprès du service technique de ma boite,
mais c'est un truc vraiment bizarre. et quand je dis
activesheet.usedrange.columns.count, c'est pareil avec rows... Ce n'est
que le début d'exécution de mon application, il y a très certainement
d'autres loups.

A+
Benead

michdenis a écrit :


Bonjour Benoît,

Sous Excel 2007,
Ceci ne provoque aucune erreur et retourne bien
16384 colonnes. Une variable déclarée de type integer devrait être
suffisante

'---------------------------------
Sub Test()
Workbooks.Add
MsgBox ActiveSheet.Columns.Count
End Sub
'---------------------------------

A ) As-tu installé le pak de compatibilité sur ton portable
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID”1b3470-3ae9-4aee-8f43-c6bb74cd1466

B ) Est-ce que tous les mises à jour ont été faites ?

C ) Est-ce que ton format de fichier était 2007 ou d'une version
précédente ?


""Benoît Marchand [Benead]"" a écrit dans le
message de groupe
de
discussion : #
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead




Avatar
michdenis
Bonjour Daniel,

| Le problème, c'est à partir de quel nombre
| faut-il utiliser CountLarge ?

*****Facile ! Avec un fichier ayant une extension Excel 2007
on utilise "CountLarge" et dans les autres cas Count

Pour ce faire, on peut utiliser une constante de compilation conditionnelle.
On attribue la valeur "True" or "False" selon que le code se retrouve dans
un fichier Excel ayant une extension Excel 2007.

Haut du module :
# Const Excel2007Plus = True

Et dans une procédure quelconque :

'----------------------------------
Sub En_Tabarnac()

#If Excel2007Plus then
Dim X as Double
X = ActiveSheet.Cells.CountLarge
#Else
Dim X as Long
X = ActiveSheet.Cells.Count
#End if

Msgbox X & " cellules dans cette feuille."
End Sub
'----------------------------------

Ce type de constante ne peut pas être déclarée avec l'épithète "Public"
il faut donc l'inclure dans chacun des modules. Pour déclarer cette
constante seulement une fois pour tout le projet voici comment faire :
Un clic droit sur le titre du projetVBA dans l'environnement VBA;
Choix de la commande : "propriété VbaProject..."
Onglet général -> Case : "Conditional Compilation Arguements" (en français)
Et pour définir la constante, il s'agit d'inscrire :
Excel2007Plus = -1 :MaConstante = 0
La valeur -1 = Vrai , la valeur 0 = Faux
Tu peux en définir plusieurs.

S'il y a un changement, par exemple, tu décides d'enregistrer une version d'un
fichier dans une autre version qu'Excel 2007, tu modifies la valeur affectée à la
constante à un seul endroit.

**** Je te l'avais dit que c'était simple ! Si tu ne veux pas rester sur le quai,
dépêche toi d'embarquer!!!
;-))))

| Excel est infoutu de compter ses cellules et Bill ses dollars.

****Si j'avais autant de dollars que Bill, je ferais comme lui...
Je paierais des gens pour les compter à ma place et j'utiliserais
une armée de bénévoles pour répandre la bonne nouvelle et
promouvoir les nouveautés de mes applications !
;-)
N.B. Le calcul vaut mieux que le travail !
Avatar
Misange
Salut,
Cette histoire est vraiment débile : on conseillait de ne pas utiliser
des formulations du type
Range("A65536").End(xlUp). ...
mais de compter le nombre de lignes de façon à ce que le code s'adapte
pour les versions suivantes. Résultat, c'est impossible de faire un code
qui n'ait pas besoin de tester si quelle est la version de
l'utilisateur. Ajoutez à cela la version 64 bits d'excel 2010 et bonjour
la compilation conditionnelle des codes à prévoir si vous ne savez pas
quelle est la version de l'utilisateur final. grr.
Idem d'ailleurs pour le typage des variables suivant la version.
Misange


Daniel.C a écrit :
Bonjour Denis
C'est OK pour moi avec CountLarge. Le problème, c'est à partir de quel
nombre faut-il utiliser CountLarge ? Conclusion :
Excel est infoutu de compter ses cellules et Bill ses dollars.
Cordialement.
Daniel

Vos réflexions m'ont mené jusqu'ici :

Pour Excel 2007, il y a une nouvelle méthode : CountLarge

Dim n As Double
n = ActiveSheet.Cells.CountLarge





"Daniel.C" a écrit dans le message de
groupe de discussion :
Bonsoir.
J'ai le même problème, mais seulement pour Cells.Count, avec XL2007
comme avec XL2010. Par contre, rien avec Rows.Count ou Columns.Count
Cordialement.
Daniel

Merci de tes réponses,

Sur le portable du boulot, je n'ai aucun éditeur approuvé et aucune
case à
cocher sur cet écran.

Il faut quand même que je te dise que j'ai testé quelques macros,
certaines
fonctionnent car elles ne font pas appel à Cells.Count, Rows.Count ou
Columns.Count. Mais toutes celles qui y font appel plante sur les
lignes de
code .Count... Que la ligne soit au début du programme ou en plein
milieu...


michdenis a écrit :
Le chemin des options sous Excel 2007 donné hier,
tu remplaces "Trust" ou "Trust Center" par
"Centre de Gestion de la confidentialité"

Pour la version 2003,
Barre des menus / outils / Macros / Sécurité / Onglet "Editeurs
approuvés"
et tu coches les 2 cases à cocher dans le bas de la fenêtre




""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de discussion :

Bonsoir,

Malheureusement, je n'ai rien qui ressemble à cela sur la partie de
gauche




Standard
Formules
Vérification
Enregistrement
Options avancées
Personnaliser
Compléments
Centre de Gestion de la confidentialité
Ressources

Les postes utilisateurs sont très bridés et il se peut que certaines
options soient masquées.
En complément d'information, Cest un master Windows XP SP3 avec le pack
Office Pro avec l'AddIn "Classic Menu Manager (ajout d'un onglet "Menu"
sur le ruban des applications Office simulant les menus d'Office 2003)
Dans Options Excel/Ressources, il y a la possibilité de lancer un
diagnostic mais il faut être administrateur pour le faire... Donc je ne
sais pas si cet outil pourrait de donner une piste.

michdenis a écrit :

Ce n'est que le début d'exécution de mon application



Ce bout de phrase me met à puce à l'oreille :

Gros bouton office / Options Excel / Section de gauche / l'item
qui se rapproche le plus de "Trust Center" (version anglaise)
Section de droite : Bouton de commande "Trust Center Setting"
As-tu coché l'option faire confiance au projetVBA ?



""Benoît Marchand [Benead]"" a écrit dans le
message de groupe de
discussion : #
Re,

A) Non, car les deux portables sont en version 2007, les packs de
compatibilité sont pour les versions antérieures.

B) Je ne sais pas, en principes les màj déterminent la version
exacte, non
?

C) J'ai essayé les deux, format 97-2003 et 2007, cela ne change rien.
Même activesheet.usedrange.columns.count plante, par contre quand je
fait activesheet.usedrange.columns.select sur une feuille non vide,
toute ma plage utilisée est sélectionnée...

Je vais faire par du problème auprès du service technique de ma boite,
mais c'est un truc vraiment bizarre. et quand je dis
activesheet.usedrange.columns.count, c'est pareil avec rows... Ce
n'est
que le début d'exécution de mon application, il y a très certainement
d'autres loups.

A+
Benead

michdenis a écrit :


Bonjour Benoît,

Sous Excel 2007,
Ceci ne provoque aucune erreur et retourne bien
16384 colonnes. Une variable déclarée de type integer devrait être
suffisante

'---------------------------------
Sub Test()
Workbooks.Add
MsgBox ActiveSheet.Columns.Count
End Sub
'---------------------------------

A ) As-tu installé le pak de compatibilité sur ton portable
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID”1b3470-3ae9-4aee-8f43-c6bb74cd1466


B ) Est-ce que tous les mises à jour ont été faites ?

C ) Est-ce que ton format de fichier était 2007 ou d'une version
précédente ?


""Benoît Marchand [Benead]"" a écrit dans le
message de groupe
de
discussion : #
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master
que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application
sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et
ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la
variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la
solution ?

A+
Benead
















Avatar
Misange
Salut Benead ;-)
Microsoft te dira que c'est "by design"
les utilisateurs te diront que c'est peut-être pas un bug au sens
classique du terme mais qu'en tous cas c'est mal pensé de la part de
microsoft.
Cette discussion (en anglais) sur le sujet est assez intéressante je
trouve :
http://excelusergroup.org/forums/t/314.aspx

Le plus réaliste : tester la version de l'utilisateur et utiliser le
code correspondant... pas sympa !
Misange

Benoît Marchand [Benead] a écrit :
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que je
dois tester. Excel 2007 y est installé (cela va me changer de 2000).
Première application que je lance, premier bug. Même application sur mon
portable perso aucun problème. Les deux Excel sont au même niveau de
version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable est
sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead
Avatar
Modeste
Bonsour® Misange avec ferveur ;o))) vous nous disiez :

Le plus réaliste : tester la version de l'utilisateur et utiliser le
code correspondant... pas sympa !



au passage pour simplement tester la version
;o)))
à l'aide d'un bug !!!
(trouvé lors de mes premiers pas avec Seven et excel 12.0)

utiliser dans une feuille ou bien definir un nom
la fonction : =INFO("Version")

si le résultat est erreur alors on est en EXCEL 2007 (12.0) ou plus

car la fonction equivalente en Excel 2007 est
=INFORMATIONS("Version")
Avatar
Benoît Marchand [Benead]
Salut petite Misange,

Je suis récemment passé sur cette page pour essayer de résoudre ce
problème. C'est vrai que de créer une nouvelle propriété CountLarge pour
compenser le fait que Count est un type de variable "Long" est un peut
fort. Je ne comprend pas pourquoi il n'ont pas passer la propriété
Count en type double dans Office 2007.

En approndissant les solutions proposées et en testant le test
ci-dessous, novice que je suis en programmation VBA, je découvre des
choses :
- c'est d'une part l'utilisation des #
- d'autre part, je ne vois pas trop comment fonctionne l'expression
Excel2007 et pourquoi elle ne plante pas le code quand je l'exécute sous
Excel 2000.
- enfin je ne me vois pas utiliser ce code à chaque fois que je veux
compter les cellules d'une plage !

' ********************************
#If Excel2007 Then
Dim n As Double
#Else
Dim n As Long
#End If
':
#If Excel2007 Then
n = ActiveSheet.UsedRange.Cells.CountLarge
#Else
n = ActiveSheet.UsedRange.Cells.Count
#End If
' ********************************

Mon problème ne se règle pas avec le CountLarge, c'est peut-être un
problème de configuration ou du nouveau master ou d'installation de
Excel 2007, et c'est AMHA réellement un bug, problème de compatibilité
ou autre...


Misange a écrit :
Salut Benead ;-)
Microsoft te dira que c'est "by design"
les utilisateurs te diront que c'est peut-être pas un bug au sens
classique du terme mais qu'en tous cas c'est mal pensé de la part de
microsoft.
Cette discussion (en anglais) sur le sujet est assez intéressante je
trouve :
http://excelusergroup.org/forums/t/314.aspx

Le plus réaliste : tester la version de l'utilisateur et utiliser le
code correspondant... pas sympa !
Misange

Benoît Marchand [Benead] a écrit :
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que
je dois tester. Excel 2007 y est installé (cela va me changer de
2000). Première application que je lance, premier bug. Même
application sur mon portable perso aucun problème. Les deux Excel
sont au même niveau de version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi
une feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable
est sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la
solution ?

A+
Benead
Avatar
isabelle
bien vue, geedee,
il faudra pensé à faire une table des mots utilisé par les différentes
versions pour s'en référer lors de la programmation,
et voilà on arrive à une nouvelle collection "VersionDeBill" ho, dur
dur pour le foi ;-)
isabelle

Le 2010-03-19 15:09, Modeste a écrit :
Bonsour® Misange avec ferveur ;o))) vous nous disiez :


Le plus réaliste : tester la version de l'utilisateur et utiliser le
code correspondant... pas sympa !



au passage pour simplement tester la version
;o)))
à l'aide d'un bug !!!
(trouvé lors de mes premiers pas avec Seven et excel 12.0)

utiliser dans une feuille ou bien definir un nom
la fonction : =INFO("Version")

si le résultat est erreur alors on est en EXCEL 2007 (12.0) ou plus

car la fonction equivalente en Excel 2007 est
=INFORMATIONS("Version")





Avatar
Benoît Marchand [Benead]
Bonsoir à tous,

Bon, mon problème est résolu, c'était un problème de dll windows qui
n'étaient pas à jour. Maintenant mes applications vont certainement
mieux fonctionner.

A+
Benead


Benoît Marchand [Benead] a écrit :
Bonsoir,

Je viens d'avoir un portable professionnel avec un nouveau master que
je dois tester. Excel 2007 y est installé (cela va me changer de
2000). Première application que je lance, premier bug. Même
application sur mon portable perso aucun problème. Les deux Excel sont
au même niveau de version SP2 MSO (12.0.6425.1000)

Le bug survient quand j'exécute le code suivant :

Sub Test()
Workbooks.Add ' Pour être sur d'avoir un classeur actif et ainsi une
feuille active
MsgBox ActiveSheet.Columns.Count
End Sub

Sur mon portable perso, le résultat est 16384 ce qui est parfaitement
normal
Sur mon portable professionnel, le résultat est "Erreur d'exécution 6
... Dépassement de capacité" : en clair Excel me dit que la variable
est sous dimensionnée (type long pourtant)

Quelqu'un a-t-il déjà eu ce message ? Et si oui, quelle est la solution ?

A+
Benead
1 2