en VBA je lance depuis Excel un exécutable créé en QBasic qui doit transformer les données d'un fichier source et écrire les résultats dans un fichier cible.
Sur 3 postes ça fonctionne bien (2 en XP pro et 1 en XP home)
Sur 2 autres ça ne passe pas (1 en XP pro et 1 en XP home) : la fenêtre dos m'affiche l'erreur 6. Si j'appuie sur entrée c'est l'erreur 55 qui apparait... Je ne trouve pas la définition des erreurs 6 et 55 donc j'ai du mal à savoir ce qui les cause.
A noter que jusqu'à maintenant je n'avais noté aucun problème sous Windows 98 SE. Sur XP ça ne passe pas sur tous les postes : s'agit-il d'une question de configuration ?...
j'ai effectivement remarqué sur quelques exemples que l'écriture QBasic est proche du VBA.
Je l'aurais bien "réécrit" mais dans le cas présent je ne dispose pas des sources. Je dois donc cerner le problème assez finement pour en parler aux gens qui ont développé ce petit utilitaire.
Si dans un premier temps quelqu'un pouvait me dire à quoi correspondent ces erreurs 6 et 55 ça me relancerait je crois...
Quel est le message complet de ton erreur ? Tu as essayé de rechercher sur la base de connaissance de MS à quoi ce message correspond (éventuellement sur le KB anglaise, bien plus fournie) ?
x$ contient simplement le n° du disque en hexadécimal, du style 6728-7A1B (c'est un genre de protection simple pour ne pas balader l'exécutable d'un poste à un autre) C'est une chaîne de caractères tirée d'un fichier texte.
Elle est en deux partie, la première met en forme une chaîne de caractères, la seconde transforme en Hexa deux nombres.
Il n'est pas impossible que l'overflow provienne de la seconde partie, mais c'est peu probable.
Pour vérifier, si tu peux, remplace la fonction FNK0 par ce qui suit et constate que ça ne plante plus (ou pas).
DEF FNK0 = "X" <> HEX$(inf03# - AGECPT#)
/!\ Ce n'est pas la solution mais un *truc* pour vérifier où n'est pas le problème.
Concernant la muise en forme de la chaîne de caractères, regardons un peu ça :
C'est tellement mal foutu de ce côté que je suis tenté de croire que le problème est là.
Si jamais la chaîne x$ fait moins de 4 caractères au départ, je ne sais pas ce que renvoye un LEFT 4 ou un RIGHT 4.
Peut-être bien un Erreur 6 Overflow.