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 :

Remplacer Tabulation par Rien


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut Remplacer Tabulation par Rien
    Bonjour à tous !

    Je vous présente mon problème.

    J'ai un fichier .sbt qui peut s'ouvir avec un blocnote.
    Dans ce fichier j'ai récupéré le code pour le mettre dans un fichier Excel et le modifier à la guise de l'utilisateur en fonction des paramètres.
    Donc j'ai fais un petit programme VBA permettant de prendre ces paramètres à l'ouverture du fichier Excel, et changer le code en fonction des ces paramètres.

    Le fichier Excel crée alors un fichier .txt dans un répertoire prédéfinie.

    Tout ceci fonctionne.

    Le soucis est que le code doit être identique ( à par les paramètres changés biensur ) mais Excel pour je ne sais quelle raison, m'ajoute plein d'espace et de tabulation.

    Alors, mon logiciel censé lire ce fichier ne l'ouvre pas et me fait une erreur.

    Je cherche à supprimer les Tabulations et les Espaces, comment procéder ?

    J'ai trouver ce post mais le code est assez complexe et je ne sais pas si les caractères espaces et tabulations peuvent être remplacer de cette façon.
    http://www.developpez.net/forums/d45...t-fichier-txt/

    Je met en pièce jointe mon fichier Excel( Générateur de PLC ), mon fichier créé ( PLC_Ratio300 ) et le fichier type désiré ( Prog_CCW ).

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Bonjour à toi,

    Pour ça, insère ton fichier dans une variable de type string.

    Ensuite il te suffit de corriger le caractère que tu veux.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim str as String
    'stockage de ton fichier dans str
    str = Replace(str, Chr(9),"") 'tabulation par rien
    str = Replace(str, " ", "") 'espace par rien
    En espérant que ça te sera utile,

    Cdlt

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Bonjour brownthefou,

    Malheureusement ce code ne fonctionne pas, je l'ai bien incorporé à mon code VBA mais les tabulations sont toujours là.

    Petite chose dont je viens de me rendre compte également c'est qu'il faut que je supprime toutes les tabulations, mais les espaces ne doivent être supprimer que sur les 4 premiers lignes.

    Dure dure :/ !

    Merci pour votre rapide réponse Brownthefou.

    Je compare les 2 fichiers, j'ai supprimer les tabulations via word et j'ai supprimer les espaces au début, et pourtant, mon logiciel ne veut toujours pas le lire, et pourtant je ne vois aucune différence entre les 2 fichiers a par les paramètres modifiés qui sont correcte.

    C'est un véritable casse-tête.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Citation Envoyé par Etudiant57 Voir le message
    Petite chose dont je viens de me rendre compte également c'est qu'il faut que je supprime toutes les tabulations, mais les espaces ne doivent être supprimer que sur les 4 premiers lignes.
    Rebonjour Etudiant,
    Je vais essayer de te taper un petit code vite fait mais je ne te promet rien.

    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
        Dim oFSO As scripting.FileSystemObject
        Dim oTxt As scripting.TextStream
        Dim str As String
        Dim str_finale As String
        Dim i As Long
        Set oFSO = New scripting.FileSystemObject
        Fichier = Application.GetOpenFilename("All Files (*), *")
        Set oTxt = oFSO.OpenTextFile(Fichier, ForReading)
        Do Until oTxt.AtEndOfStream
            If (i < 4) Then
                str = oTxt.ReadLine
                str = Replace(str, " ", "")
                str_finale = str_finale & str & vbCrLf
                i = i + 1
            Else
                str = oTxt.ReadLine
                str_finale = str_finale & str & vbCrLf
            End If
        Loop
        str_finale = Replace(str_finale, Chr(9), "")
        Set oTxt = Nothing
        Set oTxt = oFSO.OpenTextFile(DestinationFichier, ForWritting) 'à toi de définir ou tu veux placer ton fichier avec DestinationFicheir l'endroit ou il sera
         oTxt.Write str
         Set oTxt = Nothing
         Set oFSO = Nothing
    (Code tapé rapidos rapidos j'ai pas énormément de temps, je ne te promet pas qu'il n'y a pas d'erreurs...)

    Voila, à adapter à ton code.
    1. N'oublie pas d'intégrer la bibliothèque FileSystemObject
    2. Pour comprendre comment marche cette bibliothèque ou pour toute modification que tu auras à effectuer sur mon code, voici un lien qui te permettra de corriger tes réponses:
    http://warin.developpez.com/access/fichiers/

    En espérant t'avoir aidé,

    Cdlt

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Merci pour votre réponse.

    Je vais surment passé pour un idiot mais j'essai d'inclure la bibliothèque, ne m'y connaissant pas forcément en VBA j'ai du mal.

    #include ne fonctionne pas, je cherche sur le forum et google mais je ne trouve pas la façon d'inclure une bibliothèque en vba .

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Quand tu es dans le BV Editor, tu cliques sur "outils" en haut puis référence et tu sélectionnes la bibliothèque souhaitée, ensuite tu l'ajoutes avec un bouton prévu à cet effet (je crois meme qu'il s'appelle ajouter )

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Voila qui est fait, votre code est juste, il fait une erreur à la fin juste , à la ligne 22 il me met comme erreur :

    Argument ou appel de procédure incorrect

    Edit : La ligne est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oTxt = oFSO.OpenTextFile("C:\Users\Utilisateur\Desktop\",For Writting)

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Si tu as fait copier coller il n'y a qu'un "t" à ForWriting

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Je l'avais corrigé sur mon PC mais avec le copier / coller direct sur le forum il est resté :p . Sinon l'erreur est toujours présente, damned!

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Oki je vois d'où ça vient.
    La commande OpenTextFile ouvre ... un fichier texte !
    Cependant tu n'indique dans ton URL que l'adresse d'un dossier
    Crée un fichier texte bidon dans ton dossier et rajoute \bidon.txt à la fin de ton URL et foila

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    J'avoue ne pas comprendre tout le code que vous m'avez donné !

    Concrètement maintenant, j'ouvre mon fichier excel, je rentre mes paramètres via mes inputs box, ensuite je clique sur mon bouton qui me créé mon nouveau fichier excel, la fichier s'ouvre mais ca ouvre aussi une fenetre qui me demande d'ouvrir un fichier aussi.

    J'ai fais ce que vous avez dis pour le fichier texte, il n'y a plus d'erreur, mais rien ne se passe, et pourtant l'adresse de mon fichier créé est bien enregistré dans la variable Fichier.

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Arf je pensais que tu traitement initial tu le tirais d'un fichier texte, c'est pour ça... Avec l'application GetOpenFilename je te fais ouvrir un fichier (peu importe lequel) dans ton ordinateur et c'est ce fichier la qui est lu ensuite par la méthode du FileSystemObject.

    C'est donc un fichier Excel que tou souhaiterais mettre en fichier texte ??

    J'ai ouvert ton .xls mais c'est tout, si tu peux me renvoyer le code que tu as actuellement en m'expliquant pas à pas ç l'intérieur ce que tu y fais, je pourrais peut êetre t'aider.

    Mais je ne suis qu'un débutant ...

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Enfait, sur mon classeur excel j'ai 2 pages.

    Page 1 : Je récolte 3 informations.
    Page 2 : J'ai plein de ligne, rentrées en copiant coller le fichier texte dont je veux modifier le code. Ca je l'ai fait à la main puisque ca ne changera jamais, je change juste quelques info via mon programme VBA avec les infos récolté en page 1.

    Ensuite mon but c'est d'enregistré la page 2 avec les nouveaux paramètres en fichier .txt.

    Tout ca j'arrive à le faire, le problème c'est que dans le fichier .txt de base, je n'ai pas de tabulation, et là, mon fichier créé possède des tabulations après chaque ligne.

    ( Les 2 fichiers texte sont dans la pièce jointe tout en haut )

    Daccords je vous met mon code alors.

    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
    Private Sub Workbook_Open()
    Dim Ratio As Integer
    Dim Pole As Integer
    Dim Nom As String
     
    Sheets("Info").Range("A1").Select
     
    Ratio = Inputbox("What is the Stepper Ratio ?", "Stepper Ratio")
    Range("C3").Value = Ratio
     
    Pole = Inputbox("How many pole the stepper got ?", "Number of pole")
    Range("C5").Value = Pole
     
    Nom = Inputbox("What name do you want the PLC has ?", "PLC Name")
    Range("C7").Value = Nom
     
    End Sub
    Ici je récupère mes infos stocké sur la page 1 grâce à des inputs box.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
     
    Dim PLC As String
     
    PLC = [C7]
    Sheets("PLC").Copy
    CHEMIN_D_ACCES = "C:\Users\Germain\Desktop\"
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=CHEMIN_D_ACCES & "PLC_" & [C7].Value & ".xls", FileFormat:=xlText, CreateBackup:=False
     
    End Sub
    Et ici je crée mon fichier txt. Mais le soucis c'est que je retrouve plein de tabulation dedans. Le fichier texte est créé à partir de la page 2.

    Je viens de refaire un fichier, créé à partir d'un fichier très simple.
    Le fichier PLC.txt est le fichier de base, du quel je me suis inspiré, et le fichier PLC_666.txt est le fichier créé par mon programme, ils sont en tout point identique ( j'ai retiré les tabulations à la main ). Pourtant, mon logicielle accepte le PLC.txt mais pas le PLC_666.txt, pourtant, je pense qu'ils sont identique !

    Mais le fichier d'origine est plus lourd que le premier, comment ca se fait ? Et comment se fait-il que même identique, il ne fasse pas la même taille? Peut être serait-ce ces octets en + qui détiendrai l'information qui fait que mon fichier .txt créé ne peut etre lue ?
    Fichiers attachés Fichiers attachés

  14. #14
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Honnetement je ne pourrais pas t'en dire plus, je regarde tes deux fichiers et je ne comprends vraiment pas pourquoi ça ne marche pas et pourquoi ils ne font pas la même taille, aucune tabulation, aucun espace en plus...

    Je cherche et je te dis mais je ne suis pas sur de trouver ta réponse ...

    Cdlt

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    En comparant les fichiers avec Visual Comparer, j'ai vue que le fichier initiale possède des lignes que l'autre n'a pas, on peut voir ces lignes en l'ouvrant directement avec Excel, mais pas dans le blocnote, je pense que c'est ca qui fait que le fichier est plus lourd, ces lignes sont vide, mais je pense que c'est ce qui fait qu'il peut être lu et non l'autre.

    Comment reproduire ces lignes invisible sous bloc note ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Par défaut
    Je viens de trouver quelquechose :
    Quand j'ouvre ton premier fichier texte avec Exccel, le tableau de la feuille 1 est rempli "une ligne sur deux".
    Ce qui veut dire qu'à la fin de chaque ligne il y a 2 retours à la ligne avec (apparemment) le bloc note qui remplace automatiquement 2 retours à la ligne par un seul.
    Essaye de rajouter un retour à la ligne en plus à la fin de chaque ligne dans ton PLC_666 et vois si ça fonctionne. (Tu peux utiliser la méthode que je t'ai indiqué au dessus.)

    Cdlt

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Je n'ai pas tout saisie.

    Mais le soucis est que si j'ajoute deux retour à la ligne et que le bloc note le traduit pas un seul, j'en aurait quand même un et le fichier aura une structure différente du premier.

    J'ai aussi constaté qu'il y'avait une ligne sur 2 dans le fichier excel,j'ai esseyé de reproduire ce phénomène en vain. Quand je met des retour à la ligne, au lieu de me mettre l'information de la ligne dans le blocnote, ca me la met entre guillement.

    Dans le blocnote ca donne :

    Sans retour à la ligne

    "Avec retour à la ligne"

  18. #18
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour, je n'ai pas tout suivi mais juste une observation:

    apparemment tu souhaites obtenir un ".txt" sans tabulation. c'est çà?

    si c'est çà regarde du côté de Fileformat dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:=CHEMIN_D_ACCES & "PLC_" & [C7].Value & ".xls", FileFormat:=xlText, CreateBackup:=False
    ici si je me trompe pas xlText prend comme séparateur la Tab.

    d'abord remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename:=CHEMIN_D_ACCES & "PLC_" & [C7].Value & ".xls"
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename:=CHEMIN_D_ACCES & "PLC_" & [C7].Value & ".txt"
    ensuite change de FileFormat. il y en a plusieurs pour un fichier .txt par exemple:
    -FileFormat:= xlUnicodeText
    -FileFormat:= xlTextMSDOS
    etc...

    j'espère que ceci t'aideras un peu.

  19. #19
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 127
    Par défaut
    Bonjour RvToulon !

    Merci, les tabulations ont disparu, mais maintenant il me reste ce problème de ligne invisible depuis blocnote et visible sur excel, si je veux pouvoir utiliser mes fichiers avec mon logiciel, je dois savoir les recréer.

    Malheureusement je n'y comprend rien, aucun code permet de faire en sorte d'avoir ces lignes visible sur excel et non sur blocnote.

    Comme je l'ai dis précédemment, c'est un réel casse-tête !

  20. #20
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    En ouvrant ton fichier pcl1 avec notepad++ je me suis rendu compte qu'il était enregistré au format .txt (mais macintosh). D'ailleurs notepad++ m'affiche bien les lignes vides.

    Je reviens sur FileFormat essaye comme ceci :

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2011, 10h37
  2. [RegEx] remplacer ../ par rien du tout
    Par php_de_travers dans le forum Langage
    Réponses: 3
    Dernier message: 01/05/2007, 21h24
  3. [Sybase] Remplacer des neant par rien
    Par perlgirl dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/11/2006, 13h26
  4. [HTML][formulaire] remplacer "Enter" par "tabulation"
    Par anti-conformiste dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 05/11/2006, 21h29
  5. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03

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