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 :

Exportation texte sans délimiteur avec alignement à droite pour chiffres


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut Exportation texte sans délimiteur avec alignement à droite pour chiffres
    Bonjour,

    J'ai réalisé une macro qui traite un fichier (onglet 1) et copie ses valeurs dans un deuxième onglet. (onglet 2)

    Ensuite, je fais une extraction de l'onglet 2 en fichier texte, sans délimiteur avec un nombre de caractères alloué pour chacune des cellules.

    Cependant, je voudrais aligner les colonnes avec des chiffres sur la droite et non la gauche :

    En effet j'ai :

    0,00
    0,00
    363,23

    et je voudrais :

    ...0,00
    ...0,00
    363,23

    Merci de m'éclairer !

    Voici le code de mon exportation :

    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
    Sub xlsTOtxt()
     
    Dim i As Long
     
    FichierCible = Application.GetSaveAsFilename("monfichiertexte", "Fichier texte (*.txt), (*.txt)")
     
    If FichierCible = False Then Exit Sub
     
    Open FichierCible For Output As #1
     
    If FichierCible <> False Then
     
    Sheets("MonSheet").Select
    For i = 2 To Range("A:A").End(xlDown).Row
     
                    Print #1, Left(Range("A" & i).Value, 10) & Space(10 - Len(Left(Range("A" & i).Value, 10))) & Left(Range("B" & i).Value, 14) & Space(14 - Len(Left(Range("B" & i).Value, 14))) & Left(Range("C" & i).Value, 13) & Space(13 - Len(Left(Range("C" & i).Value, 13))) & _
                        Left(Range("D" & i).Value, 9)
     
    Next i
     
    Close #1
     
    Msgbox "Exportation réussie !"
    End If
    End Sub

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    bonjour,

    Essaie comme cela (Ici on prend la colonne A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Space(20 - Len(Format(Range("A" & i).Value, "# ###.00"))) & Format(Range("A" & i).Value, "# ###.00")

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Rebonjour =) et bon anniversaire !http://www.google.fr/

    Il ne veut pas de Format(...)

    Nombre d'arguments incorrects ou affectation de propriété incorrecte.

    Je bidouille et je te tiens au courant

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    fait voir la ligne de ton code qui génère une erreur

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Print #1, Space(13 - Len(Format(Range("X" & i).Value, "# ###.00"))) & Format(Range("X" & i).Value, "# ###.00") & Space(10 - Len(Format(Range("Y" & i).Value, "# ###.00"))) & Format(Range("Y" & i).Value, "# ###.00")
    Plante sur Format (pour colonne X)

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    es tu sur que ta colonne X n'a pas de valeurs, qui au format spécifié, dépassent 13 caractères ?

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Oui sur l'exemple que je traite, le maxi est de 7 caractères sur la colonne X.

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Je ne vois pas d'erreur dans ton code (fonctionne bien sur mon poste si je remplace les références des cellules
    Quel message as tu?

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    tu es sur quelle version d'excel?

  11. #11
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Et en remplacant par vba.Format ?

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Edit : Je suis sur Excel 2010.

    oui en appelant VBA ca fonctionne.

    Cependant, j'ai modifié le format en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Print #1, Space(13 - Len(VBA.Format(Range("X" & i).Value, "0.00"))) & VBA.Format(Range("X" & i).Value, "0.00")
    Car j'obtenais ,00 dans le cas précédent.

    Je vais maintenant étendre ceci sur mes 55 colonnes, et mettrais le tag résolu si ca fonctionne :

    Un grand merci à vous 2 !

    Edit 2 : Ajout tag Résolu ! Merci à vous !

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

Discussions similaires

  1. Alignement à droite avec export positionel
    Par Elcocco dans le forum SAS Base
    Réponses: 4
    Dernier message: 04/06/2012, 08h57
  2. Enregistrement sur fichier texte sans délimiteur
    Par didon971 dans le forum Langage
    Réponses: 1
    Dernier message: 24/03/2012, 11h27
  3. Export avec double quote pour variables texte
    Par brand003 dans le forum SAS Base
    Réponses: 13
    Dernier message: 15/04/2009, 18h05
  4. [XSLT] export XML vers texte plat sans délimiteur
    Par juanito003 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/11/2007, 17h05

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