Bug fonction VBA qui retourne erreur 438 [Résolu/Fermé]

Signaler
-
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
-
Bonjour,

Je travaille sur un fichier VBA et j'ai une erreur que je n'arrive absolument pas à résoudre :
La fonction format() dans mon code VBA ne marche plus. Le code est ultra simple :
Format(Now, "dd.mm.yy").
Pourtant j'ai une erreur 438 qui m'est retourné.

Ci joint la capture d'écran de mon code : http://www.cjoint.com/c/ELej6JUHJAD

Je précise que cela vient exclusivement de ce fichier puisque si j'ouvre un autre fichier, je n'ai aucun problème.

J'ai regardé les références et rien n'est à signaler de ce coté.

Auriez vous une piste pour m'aider ?

Merci !

5 réponses

Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
1 482
Bonjour,

En effet
toto = Format(Now(), "dd.mm.yy")
, c'est ok, si vous ne mettez le
 Dim toto as Date
, le format est zapper et vous aurez 04:12:15

Par contre, il y a quelque chose d'anormale sur la ligne du point d'arret: range le r est en minuscule pas en majuscule !!!!!!!!!!!!!!!!!!!!
Merci pour cette réponse.

Néanmoins, le point d'arrêt est un "détail" puisque la fonction n'arrive pas à trouver la variable "toto" (et ici le range est faux puisque je ne l'attribue à aucune feuille) --> Erreur 438

Que cette variable soit déclaré en date, variante ou rien, j'obtiens erreur 438.
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
1 482
Re,
range le r est en minuscule pas en majuscule !!!!!!!!!!!!!!!!!!!!
Non, ce n'est pas un detail, une ligne d'instructions validee doit avoir la premiere lettre des instructions en majuscule pas en minuscule
>
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021

Je suis désolé mais ceci n'est forcément vrai. En effet,
 range("A1") = now 
marche sans problème avec ou sans majuscule

De plus cela ne concerne pas le problème évoqué ici puisque je ne peux descendre jusqu'à cette ligne de code, le problème survenant avant.
Le problème vient réellement de la fonction format puisque ce code :
toto = Format(5, "0.00%")

Ne marche pas non plus (même erreur).
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
1 482
Re,

A mon tour d'etre desole, mais
Je suis désolé mais ceci n'est forcément vrai. En effet,range("A1") = now marche

Jusqu'a aujoud'hui, l'interpreteur VBA passe la premiere lettre des instructions Excel (pour ce cas) en majuscule, si ce n'est pas le cas il y a un probleme soit de syntaxe ou de votre Excel
ok
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
1 482
Re,

A defaut, pouvez-vous mettre le fichier qui pose probleme a dispo
Ayé !

Je viens enfin de trouver le bug. En faite, le problème était relativement simple et logique mais fallait regarder ailleurs que sur le code.

A un moment, je me suis retrouvé à renommer les noms des objets dans le menu VBA (ceux disponible dans le menu editeur VBA --> VBA project --> Microsoft Excel Objets). Or l'un de mes onglets a pris le nom de "Format".

Ainsi, lorsque j'appelais ce que je croyais être la fonction format, Excel souhaitait me donner les fonctions liés à une feuille et me donnait donc le message d'erreur 438.

PS : le range continue à ne pas me mettre de majuscule au début de ligne mais ça n'empeche en rien les calculs, écriture et lecture
Messages postés
15736
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 avril 2021
1 482
Re,

le range continue à ne pas me mettre de majuscule Pas normal, mais l'essentiel est que vous ayez trouve ce qui posait probleme. En regle generale, ne pas prendre un nom d'objet qui s'apparente a une instruction VBA