Ce fil s'adresse plus particulièrement à ceux qui connaissent la programmation de macros en langage VBA à l'intention d'Excel.
Exposé du problème :
Depuis l'installation récente d'Excel 2011, toutes les macros VBA récupérées d'Excel 2004 fonctionnent de façon satisfaisante, sauf une. J'ai bien identifié le problème.
Action de la macro
Cette macro a pour objet de récupérer les informations contenus dans un fichier de type Tous les fichiers, au sens d'Excel, par la commande "ouvrir" du menu Fichier. Ce fichier est structurée en 4 colonnes séparées les unes des autres par une tabulation. La première colonne contient du texte formant des dates au format jj/mm/aaaa. La seconde colonne contient du texte. La troisième colonne contient des nombres à deux décimales. La quatrième colonne est vide.
Dysfonctionnement de la macro
Dans la macro d'origine, sous Excel 2004, l'ouverture du fichier, l'interprétation des données, et leur mise en forme se faisait sans erreur. Sous Excel 2011, les dates sont imparfaitement interprétées et des erreurs sont faites ensuite lors d'une opération de tri/classement. Toutes les dates de la colonne 1 ne sont pas interprétées comme telles, et pour une partie d'entre elles, le nombre figurant le jour se trouve en position mois, tandis que le nombre figurant le mois se trouve en position jour selon le schéma suivant :
avant : jj/mm/aaaa
après : mm/jj/aaaa ou mm/jj/aa
Exploration du dysfonctionnement
Lorsque l'on réalise manuellement l'ouverture du fichier en question à l'aide de la commande Ouvrir du menu Fichier, il faut déclarer que le fichier appartient à la catégorie Tous les fichiers à l'aide du menu déroulant Activer de la fenêtre d'ouverture. Sinon, il n'est pas possible d'ouvrir le fichier. Au cours du dialogue qui suit, il n'est pas normalement utile de choisir des options, ce qui a pour effet de conserver les options par défaut. Dans ce cas, toutes les colonnes sont interprétées comme contenant de l'information standard. Toutefois, on peut préciser que la colonne 1 contient du texte représentant une date au format JMA (DMA dans le dialogue), que la colonne 2 est du texte, et la colonne 3 est standard.
On peut garder les options par défaut. Le résultat de l'ouverture est correct. Le contenu du fichier n'est pas altéré.
Lorsqu'on réalise la même chose avec la macro, le résultat est altéré, c'est-à-dire que la colonne 1 contenant les dates voit sont contenu modifié en partie. L'ouverture du fichier se fait à l'aide de la suite d'instruction suivante :
Dim n_file As String
'
n_file = Application.GetOpenFilename
Workbooks.Open (n_file)
Le fait de modifier la dernière instruction ainsi ne change pas le problème
Workbooks.OpenText (n_file)
Tentative de solution : enregistrement de la macro
Après avoir tenté de modifier sans succès l'instruction Workbooks.OpenText (n_file) pour qu'elle prenne en compte les particularités du fichier (syntaxe assez compliquée et insuffisamment documentée), j'ai tenté d'enregistrer la macro. Malheureusement, la commande d'ouverture du fichier et le paramétrage associé n'est pas enregistré
Tentative de solution : écriture de la partie critique de l'instruction
J'ai passé pas mal de temps à tenter d'écrire convenablement l'instruction
Workbooks.OpenText (n_file, et autres paramètres). Je n'y suis pas parvenu, étonné que le compilateur me dise qu'après l'instruction il attend le signe égal suivi d'une expression.
Demande d'aide
Je serai donc très attentif à toute aide de la part de ceux qui pourront me répondre.
Merci par avance.
Exposé du problème :
Depuis l'installation récente d'Excel 2011, toutes les macros VBA récupérées d'Excel 2004 fonctionnent de façon satisfaisante, sauf une. J'ai bien identifié le problème.
Action de la macro
Cette macro a pour objet de récupérer les informations contenus dans un fichier de type Tous les fichiers, au sens d'Excel, par la commande "ouvrir" du menu Fichier. Ce fichier est structurée en 4 colonnes séparées les unes des autres par une tabulation. La première colonne contient du texte formant des dates au format jj/mm/aaaa. La seconde colonne contient du texte. La troisième colonne contient des nombres à deux décimales. La quatrième colonne est vide.
Dysfonctionnement de la macro
Dans la macro d'origine, sous Excel 2004, l'ouverture du fichier, l'interprétation des données, et leur mise en forme se faisait sans erreur. Sous Excel 2011, les dates sont imparfaitement interprétées et des erreurs sont faites ensuite lors d'une opération de tri/classement. Toutes les dates de la colonne 1 ne sont pas interprétées comme telles, et pour une partie d'entre elles, le nombre figurant le jour se trouve en position mois, tandis que le nombre figurant le mois se trouve en position jour selon le schéma suivant :
avant : jj/mm/aaaa
après : mm/jj/aaaa ou mm/jj/aa
Exploration du dysfonctionnement
Lorsque l'on réalise manuellement l'ouverture du fichier en question à l'aide de la commande Ouvrir du menu Fichier, il faut déclarer que le fichier appartient à la catégorie Tous les fichiers à l'aide du menu déroulant Activer de la fenêtre d'ouverture. Sinon, il n'est pas possible d'ouvrir le fichier. Au cours du dialogue qui suit, il n'est pas normalement utile de choisir des options, ce qui a pour effet de conserver les options par défaut. Dans ce cas, toutes les colonnes sont interprétées comme contenant de l'information standard. Toutefois, on peut préciser que la colonne 1 contient du texte représentant une date au format JMA (DMA dans le dialogue), que la colonne 2 est du texte, et la colonne 3 est standard.
On peut garder les options par défaut. Le résultat de l'ouverture est correct. Le contenu du fichier n'est pas altéré.
Lorsqu'on réalise la même chose avec la macro, le résultat est altéré, c'est-à-dire que la colonne 1 contenant les dates voit sont contenu modifié en partie. L'ouverture du fichier se fait à l'aide de la suite d'instruction suivante :
Dim n_file As String
'
n_file = Application.GetOpenFilename
Workbooks.Open (n_file)
Le fait de modifier la dernière instruction ainsi ne change pas le problème
Workbooks.OpenText (n_file)
Tentative de solution : enregistrement de la macro
Après avoir tenté de modifier sans succès l'instruction Workbooks.OpenText (n_file) pour qu'elle prenne en compte les particularités du fichier (syntaxe assez compliquée et insuffisamment documentée), j'ai tenté d'enregistrer la macro. Malheureusement, la commande d'ouverture du fichier et le paramétrage associé n'est pas enregistré
Tentative de solution : écriture de la partie critique de l'instruction
J'ai passé pas mal de temps à tenter d'écrire convenablement l'instruction
Workbooks.OpenText (n_file, et autres paramètres). Je n'y suis pas parvenu, étonné que le compilateur me dise qu'après l'instruction il attend le signe égal suivi d'une expression.
Demande d'aide
Je serai donc très attentif à toute aide de la part de ceux qui pourront me répondre.
Merci par avance.