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 :

[XL-2010] Copier/coller au format "colonne"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut [XL-2010] Copier/coller au format "colonne"
    Bonjour

    Je suis développeur et je cherche à me faire des macro pour m'aider à éditer des fichier texte à partir d'une feuille excel.

    je travail sur NotePad en mode "colonnaire" (=>https://notepad-plus-plus.org/fr/fea...e-editing.html)
    et j'aimerai copier (dans le presse papier) des cellules pour les coller en mode "colonnaire" mais je n'y arrive pas.
    par exemple j'aimerai inserer:

    01
    02
    03
    dans:
    avant__apres1
    avant__apres2
    avant__apres3
    pour obtenir:
    avant_01_apres1
    avant_02_apres2
    avant_03_apres3
    avec ma macro j'obtient (je n'arrive pas a passer à la ligne du dessous sans faire un saut de ligne classique):
    avant_01
    02
    03
    _apres1
    avant__apres2
    avant__apres3
    j'utilise les fonctions suivantes pour faire des copies :
    1: Range(x).Copy
    2: Dim MyData As New DataObject
    MyData.SetText string
    MyData.PutInClipboard
    merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il y a de multiples solutions pour faire ça en VBA.
    En voici trois.

    Tu ouvres ton fichier texte avec un OpenText sur une seule colonne (pas de séparateur).
    https://msdn.microsoft.com/fr-fr/lib.../ff837097.aspx
    Tu colles tes données dans le colonne B de la même feuille de calcul.
    Avec une boucle For To, tu scrutes toutes les lignes et tu mets chaque fois en colonne C la combinaison de A et B qui te va bien.
    Tu supprimes les colonnes A et B.
    Tu enregistres le résultat au format texte au même nom que ton fichier d'origine avec un SaveAs avec un format xlTextWindows.
    https://msdn.microsoft.com/fr-fr/lib.../ff841185.aspx

    Deuxième méthode, tu traites ton fichier texte en séquentiel.
    Après l'avoir ouvert en lecture et avoir ouvert un fichier avec un autre nom en écriture.
    https://msdn.microsoft.com/fr-fr/lib.../gg264163.aspx
    Tu scrutes le contenu avec une boucle While.
    Tu lis chaque enregistrement dans le premier fichier avec Input, tu les transformes à la volée en introduisant la nouvelle données et tu écrits le résultat dans le second avec un Print.
    https://msdn.microsoft.com/fr-fr/lib.../gg264519.aspx
    https://msdn.microsoft.com/fr-fr/lib.../gg264278.aspx

    Troisième solution, la plus simple.
    Tu télécharges et installe un éditeur un peu plus puissant que NotePad (ce qui est un euphémisme), par exemple Edit+ ou NotePad++, qui permettent de faire de la copie en colonne.
    https://notepad-plus-plus.org/fr/
    https://www.editplus.com/
    Perso, j'ai longtemps utilisé Edit+ version enregistrée ($35, ça n'a rien d'exagéré à débourser) jusqu'à ce que je "perde" les codes d'enregistrement et que je passe à Notepad+ qui est un poil plus riche (et donc, corolaire, plus compliqué).

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    Merci bien pour cette réponse détaillé.

    Je travail bien sur notepad++, et sur un autre application qui prend en charge le mode colonne.
    D’ailleurs quand je CTRL-C/V un bloc de texte en colonne, il est bien recopié sous cette forme.

    Je n'ai pas été suffisamment précis sur mon besoin. j'aimerai lancer une macro lisant des données d'une table, les mettre en forme colonne, envoyer tout ca dans le presse papier, puis faire CTRL-V sur notepad++ par exemple, pour coller le contenus.

    Le presse papier gère cette mise en forme puisque d'une application à une autre elle est conservée. mais est-il bien possible de gérer cela à partir de visual basic.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par JAC69 Voir le message
    Je n'ai pas été suffisamment précis sur mon besoin. j'aimerai lancer une macro lisant des données d'une table, les mettre en forme colonne, envoyer tout ca dans le presse papier, puis faire CTRL-V sur notepad++ par exemple, pour coller le contenus.
    Tu ne pourras pas le faire ainsi en VBA.
    Ou alors il faudrait manipuler des objets Notepad++ en VBA et je te souhaite bonne chance pour trouver de la doc sur le sujet.

    Voir les deux méthodes que j'ai proposé dans mon précédent message.

    Le presse papier gère cette mise en forme puisque d'une application à une autre elle est conservée. mais est-il bien possible de gérer cela à partir de visual basic.
    Une application veut envoyer dans le presse-papier bien plus de données que les simples valeurs des éléments sélectionnés.
    Cependant, un application différente ne sera pas forcément les interpréter.
    Par exemple, si tu copies une cellule contenant du texte rouge dans Excel, le coller dans Word pourra donner du texte rouge mais pas dans Paint.
    Donc, ce n'est pas parce que de Notepad++ à Notepad++ on peut faire de la copie en colonne via le presse-papier que la même chose sera possible entre Excel et Notepad++.

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    Ok merci je me doutai un peu que cela semblait compliqué. Je vais me rabattre sur une solution ou j'ouvre le fichier pour l’éditer.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/12/2014, 08h32
  2. Excel 2010 Copier coller celulle avec condition ligne par ligne
    Par gilles171 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2014, 10h42
  3. [XL-2013] Copier-Coller avec format conditionnel
    Par PICHOUX dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/01/2014, 10h33
  4. Réponses: 14
    Dernier message: 25/10/2012, 21h11
  5. Comment empecher un copier coller dans plusieurs colonnes ?
    Par huyari dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/07/2012, 11h06

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