[R] _Excel_RangeRead Options non par défaut
Posté : jeu. 18 sept. 2014 12:01
J'ai un nouveau soucis, qui se situe juste avant mon précédent.
La lecture du fichier Excel avec _Excel_RangeRead fonctionne correctement :
N'étant pas maitre des fichiers en entrée ($cheminsource), j'ai voulu testé certaines valeurs particulières (date, nombres ...) dans différents formats (date, texte, nombre) pour voir si elles étaient bien lues. Avec l'option par défaut, sur un format date, le 01/01/2014 devient 20140101000000 (cela fonctionne évidement bien avec un format texte). Je me suis dis que l'option $iReturn = 3 d' _Excel_RangeRead était la solution parfaite pour obtenir ce qu'il est affiché à l'utilisateur dans le .xls en entrée. Mais j'obtiens une jolie erreur 5 - Error occurred when reading data using the transpose method. @extended is set to the COM error code
Avec le @extended qui vaut -2147352567
Je n'ai pas trouvé grand chose sur internet
Le code succin
Dans le fichier pointé par $cheminsource, il y a des valeurs vides, des valeurs issues d'une liste dispo sur un autre fichier xls (grâce au mécanisme du gestionnaire de noms, mais ça ne pause pas problème si je laisse par défaut), des données en texte, en date en nombre, des nombre en texte (pour ne pas perdre de 0 quand on saisit "01" par exemple)
J'espère que ce n'est pas le fonction qui a un soucis
mais je voit pas ou j'ai pu me planter, y a qu'une ligne de code
.
Merci de votre aide, ou à défaut si la fonction est KO, de m'aider à trouver une alternative.
Je pourrai éventuellement parcourir le tableau pour trouver toutes les cellules qui ressemblent à une date, et les transcoder comme le je veux (AAAAMMJJDDMM --> JJ/MM/AAAA), ou encore enregistrer le fichier en CSV (j'obtiens bien le bon texte pour une date lorsque je sauvegarde en CSV à la main) mais ce n'est pas génial, surtout qu'une option existe pour faire exactement ce que je veux.
EDIT : Je viens de tester avec un fichier CSV, édité avec Notepad++ (donc pas excel). J'ai entré à la main 01/01/2014 et il en est ressorti 20140101000000 avec _Excel_RangeRead sur le fichier CSV. Je pige plus là ... vais devoir ne plus utiliser _Excel_RangeRead mais faire un split avec un bête FileReadLine
PS : J'ai aussi un autre petit soucis au même endroit :
Je passe dans le If car @error = 5 (si je l'affiche avant le teste par exemple) mais dans le MsgBox, les 2 @error et @extended ont été réinitialisée à 0 ! C'est pourtant le code donné en exemple, il ne devrait pas y avoir de soucis ... sauf si ça pause problème de regrouper le traitement en une ligne ?
La lecture du fichier Excel avec _Excel_RangeRead fonctionne correctement :
Code : Tout sélectionner
Local $valeursXlsxLue = _Excel_RangeRead(_Excel_BookOpen(_Excel_Open(), $cheminsource))Avec le @extended qui vaut -2147352567
Je n'ai pas trouvé grand chose sur internet
Le code succin
Code : Tout sélectionner
Local $valeursXlsxLue = _Excel_RangeRead(_Excel_BookOpen(_Excel_Open(), $cheminsource), Default, Default, 3)J'espère que ce n'est pas le fonction qui a un soucis
Merci de votre aide, ou à défaut si la fonction est KO, de m'aider à trouver une alternative.
Je pourrai éventuellement parcourir le tableau pour trouver toutes les cellules qui ressemblent à une date, et les transcoder comme le je veux (AAAAMMJJDDMM --> JJ/MM/AAAA), ou encore enregistrer le fichier en CSV (j'obtiens bien le bon texte pour une date lorsque je sauvegarde en CSV à la main) mais ce n'est pas génial, surtout qu'une option existe pour faire exactement ce que je veux.
EDIT : Je viens de tester avec un fichier CSV, édité avec Notepad++ (donc pas excel). J'ai entré à la main 01/01/2014 et il en est ressorti 20140101000000 avec _Excel_RangeRead sur le fichier CSV. Je pige plus là ... vais devoir ne plus utiliser _Excel_RangeRead mais faire un split avec un bête FileReadLine
PS : J'ai aussi un autre petit soucis au même endroit :
Code : Tout sélectionner
Local $valeursXlsxLue = _Excel_RangeRead(_Excel_BookOpen(_Excel_Open(), $cheminsource), Default, Default, 3) ; Ouvre le fichier excel et charge les données sous la forme d'un tableau
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example 1", "Error opening '" & $cheminsource & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Return - 1
EndIf