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 :

Comment copier depuis word du texte sans mise en forme dans excel (via vba)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Points : 195
    Points
    195
    Par défaut Comment copier depuis word du texte sans mise en forme dans excel (via vba)
    Bonjour,

    J'ai créé un formulaire dans une feuille excel avec des cellules protégées et des zones de saisies non protégées pour saisir les données.

    Tout fonctionne parfaitement.

    Par ailleurs dès lors que je copie un texte venant de Word dans une cellule déprotégée de mon formulaire excel, la donnée est saisie dans le format qu'il avait dans word et du coup, la cellule qui était déprotégée avant la copie, passe en protégée ensuite.

    De plus, la mise en forme de cette cellule ne correspond plus à ce que j'avais mis en page avant quelle ne soit copiée.

    J'ai recherché et trouvé cette discussion, mais a priori elle ne fonctionne pas dans excel ou bien je n'arrive pas à la mettre en place.

    http://www.developpez.net/forums/d60...er-mise-forme/

    Qui peux m'aider sur le sujet ?

    A plus tard.

  2. #2
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    bonjour,

    l'idéal serait de stocker ta chaîne dans une variable avant de l'amener vers le classeur sans passer par le presse papier.

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte = ActiveDocument.Paragraphs(6)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    texte = ActiveDocument.Range(Start:=10, End:=100)
     
    Range("A1") = WorksheetFunction.Trim(WorksheetFunction.Clean(texte))
    si tu préfères une solution radicale pour tes cellules déjà formatées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mes_Cellules.ClearFormat
    plus souple et manipulable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1") = Replace(WorksheetFunction.Trim(WorksheetFunction.Clean(Range("A1"))),Chr(10),"")

  3. #3
    Membre habitué Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Points : 195
    Points
    195
    Par défaut
    Citation Envoyé par NVCfrm Voir le message
    l'idéal serait de stocker ta chaîne dans une variable avant de l'amener vers le classeur sans passer par le presse papier.
    Si je comprend bien, tu me propose de stocker dans WORD mon text dans une variable avant de l'intégrer dans EXCEL ? Si c'est ce que tu me proposes, ce n'est pas ce que je peux envisager.

    En effet, les utilisateurs peuvent copier n'importe quoi dans un de mes champs excel, et je ne maitrise à aucun moment la source de la donnée.

    Par ailleurs, j'ai une solution que je vais tester, même si ce n'est pas très propre.

    C'est de créer un évènement qui agira pour chaque champ, dès lors qu'il est activé. La macro formatera le champ modifié avec les caractéristiques voulu.

    Si quelqu'un à une autre idée, je suis preneur.

    Merci

  4. #4
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Giantrick Voir le message
    Si je comprend bien, tu me propose de stocker dans WORD mon text dans une variable avant de l'intégrer dans EXCEL ? Si c'est ce que tu me proposes, ce n'est pas ce que je peux envisager.

    En effet, les utilisateurs peuvent copier n'importe quoi dans un de mes champs excel, et je ne maitrise à aucun moment la source de la donnée.

    Par ailleurs, j'ai une solution que je vais tester, même si ce n'est pas très propre.

    C'est de créer un évènement qui agira pour chaque champ, dès lors qu'il est activé. La macro formatera le champ modifié avec les caractéristiques voulu.

    Si quelqu'un à une autre idée, je suis preneur.

    Merci
    Bonsoir,

    La proposition de stocker suppose que tes données sont copiées via macro.
    Si ce n'est pas le cas, les exemples de code qui te sont proposées peuvent toujours s'appliquer à d'autres situations.
    Je ne vois pas mieux que la ligne de code donnée adaptable à tes souhaits pour formater une cellule contenant du texte contenant des caractères de contrôle. Celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1") = Replace(WorksheetFunction.Trim(WorksheetFunction.Clean(Range("A1"))),Chr(10),"")

Discussions similaires

  1. Mise en page graphique EXCEL via VBA Excel ne répond plus !
    Par Globetruck dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 30/06/2015, 17h48
  2. Mise en forme dans EXCEL
    Par machou43 dans le forum WinDev
    Réponses: 7
    Dernier message: 07/09/2012, 08h22
  3. Macro pour copier sans mise en forme
    Par oligig dans le forum VBA Word
    Réponses: 11
    Dernier message: 07/12/2011, 22h33
  4. [WD-2003] Copier coller en texte unicode sans mise en forme
    Par Lucas42 dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/01/2010, 17h56
  5. Réponses: 2
    Dernier message: 03/03/2008, 21h03

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