IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro excel , batch et accents [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut Macro excel , batch et accents
    Bonjour à tous ,

    j'écris ce post car je n'arrive pas à résoudre mon problème, et j'éspère que vous pourrez m'aider.

    Comme indiqué dans le titre , j'ai un soucis avec les accents dans les fichiers batch. J'ai trouvé une multitude de post traitant de ça sur le net, mais aucun ne correspond exactement à mon cas de figure ,de sorte que je n'arrive pas à adapter les solutions citées dans ces posts à mon problème... (il faut savoir que j'ai de piètres connaissances en vba , et que c'est encore pire en MS-DOS!! )


    Alors voilà :

    j'ai un fichier excel qui génère un fichier texte par macro ,et y inscrit le mot "Allégés"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    num = FreeFile
    plop = "Allégés"
     
     
    Open "C:\plop.txt" For Output As #num
     
                    Print #num, Spc(0); "2"; ";"; plop
     
            Close #num
    J'ai ensuite un fichier batch qui lit ce fichier texte :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    for /f "tokens=1,2* delims=;" %%a in (c:\plop.txt) do (echo "%%b")
    pause
    malheureusement ,mon fichier batch lit : AllÚgÚs

    (comme vous l'avez surement compris ,ceci est une adaptation simplifiée de mon projet.)

    Apparemment ,le problème est résolu si j'ouvre mon fichier texte manuellement et le sauvegarde en document texte MS-DOS , mais mon projet n'a plus d'utilité si je dois faire cette manip moi-même ,et je suis incapable de la faire faire par macro excel



    -j'ai essayé de créer manuellement une sorte de "base" de mon fichier texte ,converti en document texte MS-DOS par mes soins et de lancer ma macro ,mais dans ce cas mon fichier "perd" sa compatibilité MS-DOS

    -j'ai essayé de créér mon fichier texte avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim fso  As Object
    Dim dat As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    Set dat = fso.CreateTextFile("D:\plop.txt", , true)
    mais le problème reste le meme , ca ne le convertit pas en Ms-DOS

    -J'ai essayé de remplacer les accents par des virgules ou par des chr(44) avec la commande REPLACE dans ma macro ( puisque les accents sont remplacés par des virgules dans mon fichier texte après conversion en document texte MS-DOS )
    mais mon fichier batch lit : All,g,s

    (les virgules sont différentes en fonction du codage ,apparemment ^^')

    -j'ai essayé d'ajouter la commande CHCP 1252>nul au début de mon fichier batch pour en modifier la table de code (il semblerait que les accents soient pris en compte dans la 1252),mais ça ne marche pas non plus (----> AllÚgÚs )

    j'ai trouvé d'autres pistes sur le net ,mais que je ne comprend pas et donc qui me sont impossibles à adapter ,donc je les ai ignorées....

    du coup je me retrouve comme un couillon avec mon problème insolvable

    Vous avez une solution ?

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour ludolato


    Tu pourrais utiliser la table sur cette page http://fr.wikipedia.org/wiki/Page_de_code_850
    pour modifier les caractères accentués avant de générer ton fichier txt.
    .

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Set dat = fso.CreateTextFile("D:\plop.txt",TRUE , true)
    Dernière modification par Invité ; 02/06/2015 à 08h33.

  4. #4
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    bonjour a vous

    merci d'avoir répondu aussi rapidement

    je file au boulot ,je testerais tout ça ce soir.
    Je vous tiendrais au courant

    bonne journée

  5. #5
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Me revoila :

    @rdurupt

    le True que tu as rajouté à ma ligne de code sert à indiquer si un fichier existant peut être remplacé ,inutile donc dans mon cas.

    Le 2eme True par contre sert à créer le fichier sous forme de fichier Unicode , un False permettant de le créer sous forme d'un fichier ASCII , ce qui ,je pensais ,résoudrait mon problème .

    Hélas ,la valeur False me donne le même résultat , à savoir --->AllÚgÚs , tandis que la valeur True me donne carrément aucun résultat !



    @Docmarti

    Effectivement , je pourrais essayé ça ,mais je n'ai aucune idée de comment procéder....

    il faut savoir que j'ai de piètres connaissances en vba , et que c'est encore pire en MS-DOS!!


    tu pourrais m’éclairer sur le sujet ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonsoir,
    le code ascii etendu dos commence à Chr(128) et fini à Chr(255) si tu crée un tableau avec toutes les valeur ascii et un tableau avec les caractères Windows équivalant tu peux faire un replace du caractère par le Chr() du code equivalant dos!

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Demo()
        With CreateObject("ADODB.Stream")
            .Charset = "IBM437"                     ' ou IBM850
            .Open
            .WriteText "2;Allégés", 1
            .SaveToFile "D:\plop.txt", 2
            .Close
        End With
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  8. #8
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Plutôt que de te faire des noeuds au cerveau je contournerais le problème

    A savoir si "Alleges" est permis dans ce cas je ferai ce ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
        toto = "Allégés"
        titi = Replace(toto, "é", "e")   
    End Sub

  9. #9
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    toto="Allégé"
    toto=replace(toto,"é",chr(130))

  10. #10
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    WordPad peut sauvegarder au format texte MsDOS.
    En utilisant la transformation faite par WordPad :

    Non testé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Main()
     
    plop = "Être Allégés allègres"
     
    fich = "C:\a_Rechercher\plop.txt"
     
    num = FreeFile
    Open fich For Output As #num
     
                    Print #num, MsDosTXT_SelonWordPad(plop)
     
            Close #num
     
    End Sub
    Function MsDosTXT_SelonWordPad(plop)
     
       CarASCII = "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»ÁÂÀ©¢¥ãäðÐÊËÈÍÎϦÌÓßÔÒõÕµþÞÚÛÙýݯ´"
    CarMsDOSTXT = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ*¡¢£¤¥¦§¨©ª«¬*®¯µ¶·¸½¾ÆÇÏÐÑÒÓÔÖרÝÞàáâãäåæçèéêëìíîï"
     
    For i = 1 To Len(plop)
     a = Mid(plop, i, 1)
     
     b = InStr(CarASCII, a)
     
     If b > 0 Then
      dest = dest & Mid(CarMsDOSTXT, b, 1)
     Else
      dest = dest & a
     End If
     
    Next
     
    MsDosTXT_SelonWordPad = dest
     
    End Function

  11. #11
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    wouah , c'est ce que j'appellerais des réponses en abondance !! ^^

    alors,

    @ Igloobel ,

    suite à l'ensemble de mes échecs, j'y avais pensé , mais cette combine est vraiment trop contraignante pour mon projet ,c'est la raison pour laquelle j'ai persisté dans la recherche d'une solution plus "propre" ,ce qui m'a d’ailleurs conduit ici. J'avoue que si je n'avais pas trouvé de solution sur ce forum , je me serais vu contraint d'adopter ta solution ,la mort dans l’âme (comment ça ,j'exagère ? ^^)

    @rdurupt ,

    merci !! ça marche nikel , par contre je te cache pas que ça me fous légèrement la rage , puisque j'ai trouvé cette méthode y'a bien longtemps , et que je m’étais juste trompé de caractère
    la honte.......

    @ Marc-L et Docmarti ,

    merci à vous aussi , je vais resté sur la solution de rdurupt , puisque c'est la plus simple ,mais je garde vos codes sous le coudes ,ça peut toujours servir ,d'autant plus que ce sont des choses que je ne connais absolument pas (rappelez-vous , mes piètres connaissances ) . Je mets un vote positif à Marc-L puisque j'ai testé sa solution et qu'elle fonctionne , par contre je n'ai pas tester celle de Docmarti.....

    merci à tous , en tout cas

    je ne marque pas encore le post en résolu , au cas où vous vouliez rajouter un commentaire .....

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Lancer une macro Excel 2007 depuis un fichier batch
    Par kedmard dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 30/03/2012, 16h06
  2. Macro excel perso.xls et évènement commandButton1_click()
    Par Annie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/09/2005, 19h05
  3. [macro Excel]
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2005, 09h54
  4. débutant en VBA je n'arrive pas à finir ma macro excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2005, 12h20
  5. Porter une macro Excel vers OpenOffice
    Par totofweb dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 13/07/2004, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo