Copie d'un tableau - séparateur des milliers et format texte

Bonjour,

Je réalise une macro, qui comprend la copie d'un tableau issu d'un logiciel dans une feuille Excel.

Le tableau se présente sous la forme suivante, avec les valeurs numériques en format international (décimales séparées par un point).

yoejbef

Le logiciel dispose d'une fonction de copie automatique du tableau, dont je ne connais pas le fonctionnement précis, en particulier le format.

En collant manuellement (clic droit > coller ou collage spécial), j'obtiens bien ce que je souhaite :

y5dqm2t

Les valeurs dans les cases grises sont les coordonnées de mes points, de l'ordre de l'unité.

Pour coller dans Excel, j'utilise les lignes suivantes dans ma macro :

Range("B20").Select

ActiveSheet.PasteSpecial Format:="Texte",  _
        DisplayAsIcon:=False, Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:= True

En collant avec la macro, j'obtiens ceci :

m1zfmev

Les valeurs dans les cases grises qui étaient supérieures à 1 sont passées en milliers.

J’utilise les options de formatage par défaut (identique Système) pour les séparateurs des milliers et des décimaux.

Je ne souhaite pas modifier ce paramètre pour conserver l'utilisation de la macro sur d'autres postes informatiques.

J'ai testé les solutions de collage suivantes sans succès :

  • Format "Texte Unicode"
  • Directement avec Activesheet.Paste
  • ActiveSheet.PasteSpecial (Values)

Pouvez-vous m'expliquer pourquoi la macro diffère du fonctionnement manuel ?

Comment puis-je y remédier ?

Je souhaite éviter un traitement par division des valeurs > 1000, qui serait lent et peu pratique.

Merci d'avance,

Clément

24copie-tableau.xlsm (292.94 Ko)

Bonjour,

Surtout les données originales à transformer pour tester le code.

Bonjour Raja,

Le tableau à copier est issu d'un logiciel. Je ne peux pas l'extraire.

Je ne comprends pas pourquoi j'ai des résultats différents lorsque je colle manuellement et lorsque j'exécute la macro.

Même la macro produite automatiquement par Excel en enregistrant les actions ne fonctionne pas.

Clément

J'ai joint le tableau, mais je ne pense pas qu'il soit d'une grande aide.

Ma question en bref :

Pourquoi y a-t-il un résultat différent entre:

  • coller le tableau avec CTRL+V ou collage spécial
  • coller le tableau avec une macro qui reprend les instructions de la fonction coller (macro enregistrée par Excel).

La fonction coller a-t-elle des instructions supplémentaires ou des options qui touchent au format de texte?

Comment puis-je éviter d'avoir cette conversion de 1.000 en 1000?

Clément

Bonjour

peut- on avoir le même haut d'onglet avec deux onglets bruts après une copie avec paste manuel et une après collage spécial valeur manuel, et les mêmes après utilisation macro ? (soit 4 onglets ?)

a tester ssur chiffres bruts

si les chiffres sont dans des colonnes séparées :

  • faire un remplacer " . " par " ,"
  • mettre 1 dans une cellule vide => copier ==> selection zone concernée collage spécial valeur, multiplication le texte devient nombre

Dans l'attente

Cordialement

FINDRH

Bonjour FINDRH,

Ci-dessous le fichier avec 4 onglets :

  • Collage manuel classique (ctrl+V)
  • Collage manuel spécial (conserver uniquement le texte)
  • Collage macro classique (ActiveSheet.Paste)
  • Collage macro spécial (ActiveSheet.PasteSpecial Format:="Texte Unicode")

Je préfère régler ça par les options de copier/coller (si possible) plutôt qu'un traitement supplémentaire sur mon tableau.

Clément

Surprenant

Après comparaison il apparaît que la virgule après un chiffre supérieur ou égal à 1 est considérée comme un séparateur des milliers , mais que pour ces valeurs.

Peux tu faire un copier collage spécial valeur avec un meilleur résultat?

Peux tu sauvegarder l'extraction en format texte ou CSV à partir de ton apllication ? Si oui, si les derniers chiffres sont bien formatés on peut ouvrir ce fichier a partir d'excel

sinon une macro s'avérera indispensable pour retraiter le tout en repérant ce qui est supérieur à 1000 et en divisant cette valeur par 1000

Cordialement

FINDRH

Merci pour ton analyse.

En format CSV, le collage manuel donne encore une fois le résultat que je souhaite (idem collage classique ou format texte).

Le collage par macro donne ceci :

(avec le même tableau de données sur les 6 onglets)

7sq6h6v

Bonjour

Justement, c'est le fichier CSV brut qui m'intéresse, avant toute opération, simplement quelques lignes avec au moins une ligne qui pose problème

En fichier txt c'est encore mieux

FINDRH

Ci-dessous le tableau collé directement dans le bloc notes Windows.

Clément

25tableau.txt (10.94 Ko)

Bonjour

Une proposition de solution :

1) exporter en fichier texte

2) ouvrir ton fichier excel résultat

3) ouvrir a partir d'excel ton fichier texte, option==> tous les fichiers (*) et choisir dans la deuxième boite de dialogue le séparateur Tab

4) tes colonnes sont OK et tous les chiffres dans le bon format

5) enregistrer sous classeur excel

Ci joint un fichier avec une proposition de macro (qui n'a marché qu'une fois, les suivantes excel prend la main, ce qu'on ne lui demande pas.... ) , ouvre l'explorateur de fichier, tu choisi le fichier, a son ouverture, suivant puis choisir Tab, ta feuille est copiée dans ton classeur récup

A tester

Cordialement

FINDRH

18recuptxt.xlsm (14.61 Ko)

Bonjour ClemJ

Après un appel sur le forum, Fred m'a proposé une macro qui marche à chaque fois, je l'ai testé , sans Pb de format ....

Il n'y a que:

  • le chemin critique à changer" c\User" etc pour indiquer ou se trouve ton fichier texte (tableau.txt)
  • indiquer l'onglet où recopier

Ci joint le fichier avec la Macro de Fred à Tester sur onglet recup2 ( pour lancer Ctrl+Maj+T)

En espérant que cela réponde à tes attentes

Cordialement

FINDRH

30recuptxt.xlsm (25.08 Ko)

Bonjour,

Après considération, j'ai préféré faire un post-traitement des valeurs > 1000.

Merci pour votre aide.

Clément

Rechercher des sujets similaires à "copie tableau separateur milliers format texte"