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

Excel 2003 trop intelligent ?

3 réponses
Avatar
Jdel
Bonjour,
Une macro qui marchait impeccable sous Excel 97 ne marche plus avec Excel
2003
97 était incapable d'ouvrir directement un fichier texte csv à séparateur ;,
il fallait faire une macro ou faire la conversion par le menu
2003 ouvre tout seul le même fichier mais ne reconnait pas les données
lorsqu'une macro s'exécute

J'ai le code ci-dessous qui ouvre un fichier csv et le convertit en xls.
Le fichier contient des dates au format dd/mm/aaaa, ce sont elles qui posent
problème

ChDir "P:\applicus\donnees\MARCO3\PROD\Trav"
Workbooks.OpenText Filename:= _
"P:\applicus\donnees\MARCO3\test\Trav\SUIVI_INSTR_01.csv"
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,
Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo
_
:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1),
Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1),
Array(14, 1), _
Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19,
1), Array(20, 1), _
Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25,
1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31,
1), Array(32, 1), _
Array(33, 1), Array(34, 1))
ChDir "S:\Partages\Suivi_activite\Entree_donnees"
ActiveWorkbook.SaveAs
Filename:="S:\Partages\Suivi_activite\Entree_donnees\SUIVI_INSTR_01.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:=False, CreateBackup:=False

Cela fonctionne parfaitement sous Excel 97 mais sous Excel 2003, certaines
dates se retrouvent au format standard, elles sont placées à gauche de la
cellule et elles font dérailler le reste du programme (tri par ancienneté,
soustraction entre 2 dates, etc.).
Ce qui est étonnant, c'est que cela se produit de façon aléatoire, si l'on
traite plusieurs fois la même extraction, ce n'est pas systématiquement les
mêmes dates qui sont touchées.
Si l'on ouvre le fichier csv par Excel 2003 sans utiliser la macro (ou en
double cliquant dans l'explorateur par exemple), toutes les cellules sont
bien au format date et les calculs s'effectuent normalement.
Une fois le fichier enregistré par la macro, si l'on double clique dans les
dates en erreur et qu'on appuie sur entrée, elles se mettent au bon format.

J'ai essayé deux solutions sans résultat.
- Avec la fonction CNUM ça marche malheureusement ça plante lorsque la date
n'est pas renseignée car la cellule contient / /
- Avec le code
Selection.NumberFormat = "dd/mm/yy"
Selection.Replace What:="/", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Ca ne donne rien, la cellule reste au format texte

Quelqu'un aurait-il déjà eu ce genre de problème et y a-t-il une solution
soit pour que toutes les dates se mettent au bon format lors de la
conversion, soit pour passer les cellules du format standard au format date

Merci d'avance et excusez la longueur de ce post

Jean-Pierre

3 réponses

Avatar
Daniel
Bonsoir.
Je l'ai jamais fait. Il faut peut-être préciser le type "xlDMYFormat" pour
la date (cf.aide sur TextToColumns)
Cordialement.
Daniel
"Jdel" a écrit dans le message de news:
4496f36c$0$914$
Bonjour,
Une macro qui marchait impeccable sous Excel 97 ne marche plus avec Excel
2003
97 était incapable d'ouvrir directement un fichier texte csv à séparateur
;, il fallait faire une macro ou faire la conversion par le menu
2003 ouvre tout seul le même fichier mais ne reconnait pas les données
lorsqu'une macro s'exécute

J'ai le code ci-dessous qui ouvre un fichier csv et le convertit en xls.
Le fichier contient des dates au format dd/mm/aaaa, ce sont elles qui
posent
problème

ChDir "P:applicusdonneesMARCO3PRODTrav"
Workbooks.OpenText Filename:= _
"P:applicusdonneesMARCO3testTravSUIVI_INSTR_01.csv"
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,
Tab:úlse, _
Semicolon:=True, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo
_
:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1),
Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13,
1),
Array(14, 1), _
Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19,
1), Array(20, 1), _
Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25,
1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31,
1), Array(32, 1), _
Array(33, 1), Array(34, 1))
ChDir "S:PartagesSuivi_activiteEntree_donnees"
ActiveWorkbook.SaveAs
Filename:="S:PartagesSuivi_activiteEntree_donneesSUIVI_INSTR_01.xls",
_
FileFormat:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, CreateBackup:úlse

Cela fonctionne parfaitement sous Excel 97 mais sous Excel 2003, certaines
dates se retrouvent au format standard, elles sont placées à gauche de la
cellule et elles font dérailler le reste du programme (tri par ancienneté,
soustraction entre 2 dates, etc.).
Ce qui est étonnant, c'est que cela se produit de façon aléatoire, si l'on
traite plusieurs fois la même extraction, ce n'est pas systématiquement
les
mêmes dates qui sont touchées.
Si l'on ouvre le fichier csv par Excel 2003 sans utiliser la macro (ou en
double cliquant dans l'explorateur par exemple), toutes les cellules sont
bien au format date et les calculs s'effectuent normalement.
Une fois le fichier enregistré par la macro, si l'on double clique dans
les
dates en erreur et qu'on appuie sur entrée, elles se mettent au bon
format.

J'ai essayé deux solutions sans résultat.
- Avec la fonction CNUM ça marche malheureusement ça plante lorsque la
date
n'est pas renseignée car la cellule contient / /
- Avec le code
Selection.NumberFormat = "dd/mm/yy"
Selection.Replace What:="/", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Ca ne donne rien, la cellule reste au format texte

Quelqu'un aurait-il déjà eu ce genre de problème et y a-t-il une solution
soit pour que toutes les dates se mettent au bon format lors de la
conversion, soit pour passer les cellules du format standard au format
date

Merci d'avance et excusez la longueur de ce post

Jean-Pierre




Avatar
Modeste
Bonsour® Jdel avec ferveur ;o))) vous nous disiez :

Bonjour,
Une macro qui marchait impeccable sous Excel 97 ne marche plus avec Excel
2003
97 était incapable d'ouvrir directement un fichier texte csv à séparateur ;,
il fallait faire une macro ou faire la conversion par le menu
2003 ouvre tout seul le même fichier mais ne reconnait pas les données
lorsqu'une macro s'exécute

J'ai le code ci-dessous qui ouvre un fichier csv et le convertit en xls.
Le fichier contient des dates au format dd/mm/aaaa, ce sont elles qui posent
problème

ChDir "P:applicusdonneesMARCO3PRODTrav"
Workbooks.OpenText Filename:= _
"P:applicusdonneesMARCO3testTravSUIVI_INSTR_01.csv"
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,
Tab:úlse, _
Semicolon:=True, Comma:úlse, Space:úlse, Other:úlse, FieldInfo
_
:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1),
Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1),
Array(14, 1), _
Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19,
1), Array(20, 1), _
Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25,
1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31,
1), Array(32, 1), _
Array(33, 1), Array(34, 1)), Local:=True


ajouter ici le parametre Local permet d'interpréter les dates selon les options
locales
ce parametre connu depuis EXCEL 2000 générera cependant une erreur sous EXCEL97


--
--
@+
;o)))

Avatar
Jdel
Bonjour Modeste,
Pourriez vous me donner des précisions sur ce paramètre Local
Comment l'insérer dans cette macro
Merci
Cordialement
Jean-Pierre
"Modeste" a écrit dans le message de news:
ePAiDU%
Bonsour® Jdel avec ferveur ;o))) vous nous disiez :

Bonjour,
Une macro qui marchait impeccable sous Excel 97 ne marche plus avec Excel
2003
97 était incapable d'ouvrir directement un fichier texte csv à séparateur
;,
il fallait faire une macro ou faire la conversion par le menu
2003 ouvre tout seul le même fichier mais ne reconnait pas les données
lorsqu'une macro s'exécute

J'ai le code ci-dessous qui ouvre un fichier csv et le convertit en xls.
Le fichier contient des dates au format dd/mm/aaaa, ce sont elles qui
posent
problème

ChDir "P:applicusdonneesMARCO3PRODTrav"
Workbooks.OpenText Filename:= _
"P:applicusdonneesMARCO3testTravSUIVI_INSTR_01.csv"
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,
Tab:úlse, _
Semicolon:=True, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo
_
:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1),
Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13,
1),
Array(14, 1), _
Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19,
1), Array(20, 1), _
Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25,
1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31,
1), Array(32, 1), _
Array(33, 1), Array(34, 1)), Local:=True


ajouter ici le parametre Local permet d'interpréter les dates selon les
options locales
ce parametre connu depuis EXCEL 2000 générera cependant une erreur sous
EXCEL97


--
--
@+
;o)))