2 votes

Excel : Travailler avec named Range.NumberFormat en VBA : "General" vs. "Standard" (en anglais)

J'ai quelques questions sur Range.NumberFormat - j'espère que quelqu'un a des réponses prêtes à l'emploi, car la recherche sur le web est difficile avec tous les termes génériques.

Un peu d'histoire : J'essaie d'éliminer le "hasard" Erreur 1004 codes : Impossible de définir la propriété NumberFormat de la classe Range est le message. L'erreur se produit lorsque j'essaie de définir le format .NumberFormat d'un fichier en retard vers un format nommé, en travaillant principalement avec "General" ou "Standard". L'objet, dans 99% des cas, est Application.Selection. Veuillez également noter que la cause la plus fréquente de cette erreur est la protection de la feuille ou du classeur. ne s'applique pas ici.

  1. Entre Excel 2003 et 2007, Microsoft semble avoir introduit un bogue dans VBA. Si, dans la fenêtre immédiate, je tape ? Selection.NumberFormat et que j'appuie sur Entrée, j'obtiens "Général". Si je fais la même chose avec certains compléments (pas tous, pas prévisibles) en exécutant une macro avec un point d'arrêt, j'obtiens généralement "Standard". Qu'est-ce que "Standard" ? D'où cela vient-il ? Je veux prendre un format de nombre dans une cellule et le déposer dans une autre ; au hasard des moments, je ne peux pas appliquer "Standard" de cette manière, et son résultat n'est pas comme Général. (Dans Excel 2003, il n'apparaît jamais dans la fenêtre immédiate, et ne s'applique pas systématiquement).

  2. Même si je convertis toutes les instances de "Standard" en "Général", j'obtiens encore parfois une erreur à l'adresse suivante MyObject.NumberFormat = "General" . J'ai lu à plusieurs endroits qu'il est préférable d'appliquer le format sous-jacent au format nommé, c'est-à-dire que General s'applique à quelque chose (comme standard, je suppose) ; quelle est la syntaxe pour faire cela dans Excel VBA ?

Merci d'avance pour votre aide.

7voto

Banjoe Points 1730

Ce n'est probablement pas une solution complète, mais c'est un début :

Je crois que "Standard" est utilisé à la place de "General" dans certaines langues. Vous devriez comparer vos résultats avec .NumberFormatLocal.

Pour la partie solution, si vous essayez de définir NumberFormat sur "General" et que vous obtenez des erreurs, définissez simplement NumberForamt sur une chaîne vide. Cela rendra automatiquement le NumberFormat General/Standard.

selection.NumberFormat = ""

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X