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 :

Ligne au format texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut Ligne au format texte
    Bonjour,

    Je lis un fichier contenant des données à inserer dans une feuille, séparées par des point-virgule.

    Dans un précedent post, bidou m'as donné le code suivant qui marche parfaitement pour distribuer les données d'une ligne dans les différentes colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets(feuille).Cells(lig, 1).Value = ligne
    Worksheets(feuille).Cells(lig, 1).TextToColumns Destination:=Worksheets(feuille).Cells(lig, 1), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
    Parmi ces données, j'ai des données ne comportant que des chiffres et il m'enlève les zeros devant.

    J'ai essayé d'ajouter le code suivant avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(feuille).Rows(lig).NumberFormat = "@"
    pour mettre la ligne au format texte, ca ne marche pas

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    est ce que chaque ligne de texte à toujours le même nombre de valeurs ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Non justement, je ne connais pas à l'avance le nombre de colonnes.

    Je voulais tout mettre au format texte, je vais devoir faire une boucle je pense

  4. #4
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    sinon ca peut marcher avec un code similaire à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Redist()
     
    Dim NbCase As Long, MaCell As Range, TabRedist As Variant, compteur As Long
     
        For Each MaCell In Range("A1:A30")
            NbCase = Len(MaCell.Value) - Len(Replace(MaCell.Value, ";", ""))
            ReDim TabRedist(NbCase)
            For compteur = 0 To NbCase
                TabRedist(compteur) = Array(compteur + 1, 2)
            Next compteur
            MaCell.TextToColumns Destination:=MaCell, DataType:=xlDelimited, Semicolon:=True, FieldInfo:=TabRedist
        Next
     
    End Sub

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    J'essaye de comprendre le code.

    NbCase est donc le nombre de caractère de ma ligne sans les point-virgule

    J'ai pas trop compris la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For compteur = 0 To NbCase
        TabRedist(compteur) = Array(compteur + 1, 2)
    Next compteur

  6. #6
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Ca sert à créer l'argument FieldInfo pour lui dire de redistribuer les données en texte

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Dans un précedent post, bidou m'as donné le code suivant qui marche parfaitement pour distribuer les données d'une ligne dans les différentes colonnes :

    Parmi ces données, j'ai des données ne comportant que des chiffres et il m'enlève les zeros devant.
    Ces données sont-elles dans une même colonnes ? Je précise : la ou les colonnes contenant ces données n'ont-elles que ce type de données ?
    Ces données doivent-elles toutes avoir le même format (même nombre de caractères) ?
    Si oui aux deux questions,
    tu peux formater ta/tes colonnes ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns(NoColonne).NumberFormat = "0000000000"
    avec autant de zéros que tu dois avoir de chiffres dans la cellule. Ça ajoutera les zéros manquants à gauche du chiffre.
    Si non,
    vois la méthode de Bidou
    A+

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    J'ai un nombre de colonne indeterminé, un des format de données indeterminés egalement, c'est pourquoi je veux tous les mettre au format texte pour que dans le cas de données numérique il ne m'enlève pas les zeros.

    Mais j'ai également des données de format texte, de plus je ne connais pas la longueur des données.

    En fait le code de bidou me permet de mettre la ligne dans la colonne 1 puis de distribuer les données dans chaque colonne (en fonction du séparateur point-virgule). Avant je fesait une boucle caractère par caractère, puis pour chaque colonne j'appliquais le format texte.

    Son code est beaucoup plus simple, mais je sais pas comment formater toute la ligne au format texte avant, sans avoir à refaire de nouveau une boucle.

    Je suis pas sur d'être très clair.

    Merci de votre aide, et bon week-end, je reviens lundi

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Dommage que tu n'aies pas continué sur la même discussion, on aurait tous les éléments
    Mets au moins l'URL de l'ancienne discussion je fusionnerai les deux.
    A+

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Merci, mais tout est dans ce post, j'ai simplifié mon code de départ par les 2 lignes de code de bidou (ci-dessus)

    Je veux juste mettre la ligne au format texte avant d'y mettre les donnée.

Discussions similaires

  1. Envoi de mails en format texte et retours à la ligne
    Par wd_newbie dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2015, 10h02
  2. [Débutant] Supprimer les lignes d'un texte ayant un format défini
    Par Docteur26 dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/02/2014, 00h19
  3. Réponses: 5
    Dernier message: 05/12/2008, 01h39
  4. Sur la même ligne mettre du texte à gauche et à droite
    Par Oberown dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 20/06/2007, 15h50
  5. CppUnit et la generation de rapport au format text
    Par xxiemeciel dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 03/10/2005, 22h08

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