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 :

Excel vers Notepad - problème espaces


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut Excel vers Notepad - problème espaces
    Bonjour,

    Je voudrais éditer un fichier notepad contenant des millier de ligne avec excel.
    J'ai attaché un fichier txt avec une seule ligne pour vous montrer à quoi ça ressemble.

    Lorsque je copie une ligne dans excel, je sais la fractionner pour que chaque grouppe apparaisse dans une cellule, mais une fois que je recopie de excel vers notepad, le format d'origine n'est plus le même (les espaces entre chaque groupe est le même et égal a une tabulation).

    Il devrait y avoir 1 espace entre 1010 et 2012 puis 6 espaces entre 2012 et 2317.
    Y a-t-il une macro simple pour automatiquement ré-exporter mes données avec les bons espaces ?

    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Exécute cette macro quand le fichier texte est ouvert et que tu veux l'exporter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test1()
    Dim Sh As Worksheet, C As Range
    Set Sh = ActiveWorkbook.ActiveSheet
    Workbooks.Add 1
    With Sh
        For Each C In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
            Cells(C.Row, 1) = C.Value & " " & C.Offset(, 1).Value & "      " & C.Offset(, 2).Value
        Next C
        ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "notepad2.txt", xlTextWindows
        ActiveWorkbook.Close False
    End With
    End Sub

  3. #3
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut
    Bonjour Daniel,

    Merci pour ton code, ça fonctionne parfaitement !

    Il faut maintenant que j'adapte ce code à mon fichier original qui contient 2000 lignes et quelques colonnes en plus.

    Quelle boucle permet de lister les 2000 lignes ?

    Tu peux m'expliquer comment fonctionne la syntaxe pour que je puisse ajouter d'autres chiffres a la 1ère ligne ?
    Je vois que les espaces sont définis entre les " ".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(C.Row, 1) = C.Value & " " & C.Offset(, 1).Value & "      " & C.Offset(, 2).Value
    Par exemple:
    1010 2012 2317 et ajouter le nombre 22 après 2317, séparé de 3 espaces.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai supposé que les 3 nombres étaient dans les cellules des colonnes A, B et C. La macro est prévue pour traiter toutes les lignes, tu n'as rien à modifier pour cela. La macro traite successivement chaque ligne. C représente la cellule de la colonne A en cours de traitement. La ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(C.Row, 1) = C.Value & " " & C.Offset(, 1).Value & "      " & C.Offset(, 2).Value
    peut se traduire littéralement :

    dans la cellule du nouveau classeur ayant le même numéro de ligne que la cellule C, je mets la valeur de C et un espace et la valeur de la première cellule à droite de la cellule C (C.Offset(, 1).Value) et 6 espaces et la valeur de la deuxième à droite de la cellule C (C.Offset(, 2).Value). Si tu doit ajouter 3 espaces et la cellule de la colonne D, mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Cells(C.Row, 1) = C.Value & " " & C.Offset(, 1).Value & "      " & C.Offset(, 2).Value & _
            "   " & C.Offset(, 3).Value

  5. #5
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut
    Génial, je vais essayer ça.

    Merci encore pour ton aide !!

Discussions similaires

  1. [XL-2010] Export Excel vers notepad et autres petites tortures
    Par SamerKate dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/09/2012, 14h51
  2. Problème exportation excel vers la racine
    Par bogsy15 dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/05/2007, 15h59
  3. problème copie Tableau de Excel vers Word
    Par el_titou007 dans le forum VBA Word
    Réponses: 2
    Dernier message: 02/04/2007, 10h42
  4. Problème d'iportation Excel vers Access
    Par poyoland dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/06/2006, 17h52
  5. Problème champ après import d'excel vers access
    Par David M dans le forum Access
    Réponses: 6
    Dernier message: 16/10/2005, 12h53

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