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

OpenOffice & LibreOffice Discussion :

libreoffice calc convertir nombre en texte


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    libreoffice calc convertir nombre en texte
    Bonjour à tous,

    suite à un traitement d'une grosse base de données (environ 65000 lignes), je souhaite convertir des nombres en texte, d'une manière automatique. En fait l'exact contraire de la fonction CNUM.
    Je n'ai trouvé qu'une idée manuelle, c'est à dire de mettre un ' avant chaque nombre d'une cellule pour la convertir directement en texte.

    Quelqu'un aurait il une idée beaucoup plus productive ?

    En d'autres terme, est il possible de générer le guillemet ' en automatique avant chaque nombre d'une cellule pour la convertir directement en texte ?

    Merci de votre support

  2. #2
    Nouveau membre du Club
    Bonjour,
    La fonction TEXTE() est appropriée. Si le nombre est en A1, tu peut le transformer en texte ainsi :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =TEXTE(A1;"Standard")
    Tu peux bien sûr donner un format plus spécifique, par exemple si le nombre est une date.
    Cordialement,
    Pekoe

  3. #3
    Membre habitué
    Bonjour,

    Tu peux aussi ajouter une apostrophe devant ton nombre avec la fonction & et ensuite ne récupérer que ce qui est à droite moins un caractère :
    Code formule :Sélectionner tout -Visualiser dans une fenêtre à part
    =DROITE(A1;NBCAR("'"&A1)-1)

  4. #4
    Membre à l'essai
    Merci pour vos réponses,

    1) Pourquoi 'ne récupérer que ce qui est à droite moins un caractère' ?

    2) Je me suis peut être mal exprimé, j'ai découvert une réelle anarchie dans mon fichier de 65000 lignes:
    J'essaie d'être plus clair, en Format Nombre Standard dans la colonne B (qui ne concerne que des nombres), j'ai 3 cas :
    _ a) Des textes (aligné à gauche) avec un ' : exemple : '25648655
    _ b) Des textes (aligné à gauche) sans un ' : exemple : 24555111
    _ a) Des nombres (aligné à droite) : exemple : 1234566

    Je veux arriver au résultat suivant :
    Dans la colonne B, je ne veux que des textes (aligné à gauche) avec un '

    Pour l'instant, je ne vois qu'une solution, c'est de passer en revue manuellement les 65000 cellules et :
    - ne pas modifier : Des textes (aligné à gauche) avec un '
    - modifier : Des textes (aligné à gauche) sans un ' en rajoutant manuellement un '
    - modifier : Des nombres (aligné à droite) en rajoutant manuellement un '

    Je sollicite votre aide pour m'éviter ce travail manuel énorme en espérant avoir été plus clair

    Merci vraiment de votre support

  5. #5
    Nouveau membre du Club
    Bonsoir,
    Je ne comprends pas ton attachement à ', mais bon. Mettons que tu aies tes données depuis la cellule B1. En C1 tu saisis :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =SI(GAUCHE(B1)="'";B1;SI(ESTNUM(B1);"'"&TEXTE(B1;"Standard");"'"&B1))
    Puis tu double-cliques dans le coin inférieur droit de ta cellule C1. La formule sera recopiée jusqu'à la dernière donnée de la colonne B (à condition qu'il n'y ait pas de trous...). Juste après ton double-clic, toute la plage de la colonne C est sélectionnée, profites-en pour faire un copier (Ctrl+C)/collage spécial(Maj+Ctrl+V) en laissant les cases cochées par défaut et OK. Tu peux ensuite supprimer la colonne B.

    Sans ce fameux ' : tu sélectionnes la colonne B, puis Édition > Rechercher & Remplacer (' par rien) et Tout remplacer, puis resélection de la colonne B et Données > Texte en colonnes, tu choisis le type de champ Texte, puis OK.
    Cordialement,

  6. #6
    Membre habitué
    Bonjour,

    Comme Pekoe, je ne comprends pas ton attachement à l'apostrophe.

    Les données d'entrée étaient : "suite à un traitement d'une grosse base de données (environ 65000 lignes), je souhaite convertir des nombres en texte, d'une manière automatique. "

    Tu n'as pas précisé à ce moment-là que tu souhaitais garder l'apostrophe.

  7. #7
    Membre à l'essai
    Bonjour à tous et Merci pour votre aide,

    oui vous avez raison, en investiguant j'ai rajouté des données d'entrée.

    La raison pour laquelle je désire conserver le ' est très simple :
    Dans cette BDD, je gère des séries de Nombre avec des espaces, des points, et je trouve beaucoup plus sécurisant d'utiliser les '.
    A la base, toutes les données provenait de différentes sources, et j'ai dû procéder à des importations.

    J'utilise LibreOffice et certaines personnes qui ont collaboré à cette saisie utilisait des logiciels différents, avec comme seul mot d'ordre : elles devaient mettre la série de nombre en 'format texte' en respectant les espaces et les points. D'où cette anarchie : cellule texte avec ' et sans '

    J'insiste également sur le ' car évidemment, cela fausse complètement ma recherche de doublons.
    exemple si '1234 et 1234, dans ce cas là mon système m'indique qu'il n'y a pas de doublons ce qui est faux.

    Je vais tester vos méthodes et je reviens vers vous.

    En tout cas, Merci de votre aide précieuse.

  8. #8
    Membre expérimenté
    Bonjour,
    comme cela ne semble clair pour personne, pourrait-tu creer un petit fichier avec 2 colonnes et une dizaine de lignes montrant dans la première colonnes les valeurs non modifiées qui posent problèmes et dans la deuxième les résultats que tu veux.
    Tu l'envoie comme pièce jointe et ainsi on pourrait voir directement ce que tu demandes.

  9. #9
    Membre à l'essai
    Bonjour,

    oui tu as raison, je n'ai pas respecté l'adage '1 dessin = 10000 mots'
    Voici le fichier

    Merci

  10. #10
    Membre à l'essai
    Bonjour Pekoe,

    j'ai testé ta formule, mais ça ne fonctionne pas, je joins le fichier où j'ai fait la manipulation.
    Colonne B, voici les résultats de ta formule et colonne E, les résultats auxquels je souhaiterais arriver.

    Le ' ne doit être visible que dans la barre de formule et non dans l'affichage.

    C'est une grosse prise de tête, j'en conviens.

    Merci de votre aide

  11. #11
    Nouveau membre du Club
    Bonjour,
    Suite à ce message de Pascal Chantriaux, je te propose la démarche suivante (on laisse tomber les formules) :
    • tu sélectionnes la colonne où se trouvent tes valeurs initiales, puis tu utilise la commande de menu Données > Texte en colonnes, l'entête de champ est Standard, tu le changes en Texte (clic droit sur cet entête), puis OK : à ce stade, toutes tes valeurs sont devenues des textes, sans apostrophe, dans un format texte (@)
    • tu formates, seules les valeurs étant sélectionnées (il n'y a qu'elles, dans la colonne, dont le format est passé en Texte), en Nombre Standard : le contenu des cellules n'a pas changé, mais l'apostrophe apparaît dans la ligne de saisie.

    Cordialement

  12. #12
    Membre chevronné
    Tout cela me semble bien compliqué.
    D'où proviennent les données au départ ?
    L'extraction a sûrement générer un CSV.
    Il suffit donc lors de l'importation via l'assistant de paramétrer la colonne en texte.
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  13. #13
    Membre à l'essai
    Bonjour Pekoe,

    je te remercie sincèrement, et également toutes les personnes qui ont participé à ce post.

    Ta démarche et procédure fonctionne.
    J’ai une interrogation cependant, elle fonctionne chez moi mais pas pour tout :

    1) Pour voir apparaître les ', il faut formater la feuille en ‘Texte’ puis revenir en Format ‘Nombre Standard’.

    2) Malgré cela, l’apostrophe n’apparaît pas dans la ligne de saisie :
    519 312 98 722
    9 84790489119
    514219718 648719 81
    698 79 71
    Exemple : 9 84790489119 Même en manuel, je ne peux pas obtenir la visualisation 9 84790489119 et la ligne de saisie '9 84790489119

    Alors que dans ces cas, l’apostrophe apparaît :
    '888 319 914 718
    '85712926871

    3) Peut-on en conclure que par exemple 514219718 648719 81 ne peut pas être considéré comme un nombre dans LibreOffice Calc puisqu’il n’intègre pas les 2 conditions : avoir tous ses chiffres collés ou espacés strictement tous les 3 chiffres ?

    J’attends ta réponse pour mettre le post comme ‘résolu’

    Merci encore pour tout, Pekoe et les autres membres, avez été très pro.

    Excellente journée à tous

  14. #14
    Membre chevronné
    Citation Envoyé par Muay74 Voir le message
    1) Pour voir apparaître les ', il faut formater la feuille en ‘Texte’ puis revenir en Format ‘Nombre Standard’.
    A priori, vous ne tenez pas compte de la piste que je donne.
    Libre à vous de vous compliquer la vie.
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  15. #15
    Membre à l'essai
    Bonjour Bidouille,

    nos messages se sont croisés, ces données proviennent tous de tableurs mais divers : Excel, Google Sheets, Open Office.
    Lors de la compilation des données, je me suis aperçu que c'était une véritable anarchie....
    J'ai demandé à l'aide par l'intermédiaire de ce post alors que l'importation était déjà réalisée....

    Merci

  16. #16
    Nouveau membre du Club
    Bonjour,
    Citation Envoyé par Muay74
    3) Peut-on en conclure que par exemple 514219718 648719 81 ne peut pas être considéré comme un nombre dans LibreOffice Calc puisqu’il n’intègre pas les 2 conditions : avoir tous ses chiffres collés ou espacés strictement tous les 3 chiffres ?
    • Le nombre que tu choisis, même avec un séparateur des milliers correct, va être mutilé, car il a plus de 15 chiffres : l'interpréteur va l'arrondir à 15 chiffres significatifs ;
    • L'apostrophe est un marqueur cellulaire de format Texte d'une valeur lorsque le format de la cellule est Nombre. C'est un marqueur pour lever une ambiguïté éventuelle entre une valeur texte ressemblant à un nombre et un vrai nombre. L'interpréteur de Calc ne place donc ce marqueur que lorsqu'il y a ambiguïté et pour lui, «10 0122» ne peut pas être un nombre alors que «100 122», si ;
    • Il ne faut pas confondre le formatage d'une valeur et la valeur elle-même : la valeur «519 312 98 722» peut être considérée comme un nombre si on enlève les espaces de la valeur, donc «51931298722» et qu'on formate la cellule avec
      000" "000" "00" "000, ce qui donnera en visuel 519 312 98 722 ;
    • Tu ne nous dis pas si l'espace entre deux chiffres a du sens pour toi, autrement dit, est-ce que «519 312 98 722» a la même valeur pour toi que «51 931 298 722» ? Si ce sont des quantités, oui, bien sûr, l'humain que je suis conclut à l'équivalence (pas Calc, comme on l'a vu), mais si ce sont par exemple des coordonnées géographiques, c'est différent ;
    • Si l'espace n'a pas de sens pour toi, l'enlever permettra d'avoir le marqueur sur toutes les valeurs.

    Si tu n'as aucun contrôle sur les données qui te parviennent, que les espaces ont du sens et que tu souhaites garder le marqueur Apostrophe, je ne vois pas de solution.
    D'un autre côté, si tu regardes bien, dans la barre d'état de Calc (en bas à droite), tu peux avoir l'option Nombre (clic droit dans cette zone). Si la cellule qui a le focus contient un nombre, alors s'affiche Compter:1, si c'est une valeur texte, alors s'affiche Compter:0. Il me semble que cela te garantit qu'une cellule contient bien du texte, au même titre que l'apostrophe, non ?
    Cordialement,

  17. #17
    Membre à l'essai
    Re-bonjour Pekoe,

    1) L’espace est primordial pour moi, donc en effet la valeur «519 312 98 722» est complètement différente de «51 931 298 722»

    2) Avec ta procédure, je suis absolument certain que je ne peux pas avoir une cellule d’une valeur «‘SuiteChiffreA» et une autre «SuiteChiffreA». Donc ma formule de recherche de doublons lors de la compilation de données, fonctionnera à 100% et c’est ce que je souhaitais au final.

    3) Pour contrer toute erreur éventuelle, je vais donc demander aux personnes qui me saisissent des données, de me les rentrer avec ‘

    4)Pour ton information, et c’est un truc de fou :
    Sur LibreOffice : je ne peux pas obtenir la visualisation 9 84790489119 et la ligne de saisie '9 84790489119
    Sur Excel : je peux obtenir la visualisation 9 84790489119 et la ligne de saisie '9 84790489119 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Va comprendre….

    5) Pour conclure, finalement : 514219718 648719 81 ne peut pas être considéré comme un nombre dans LibreOffice Calc puisqu’il n’intègre pas les 2 conditions : avoir tous ses chiffres collés ou espacés strictement tous les 3 chiffres

    J’attends que tu valides ces 5 points puis je marque le post comme ‘Résolu’

    Merci infiniment Pekoe ainsi qu’à toutes les personnes qui ont collaboré…..

  18. #18
    Nouveau membre du Club
    Citation Envoyé par Muay74
    J’attends que tu valides ces 5 points
    Je n'ai pas à donner mon aval, surtout pour une manip dont j'ignore les tenants et les aboutissants. Mais quelques remarques cependant :

    • Point 1 : si l'espace est un séparateur, pourquoi garder les valeurs séparées dans une même cellule ? N'est-ce pas une question d'importation de csv non maîtrisée, comme le suggère Bidouille ?
    • Point 2 : si toutes les valeurs sont transformées en texte par Données > Texte en colonnes dans des cellules au format Texte, seuls les vrais doublons seront trouvés, l'apostrophe ne parasite plus les valeurs. Tu pourrais d'ailleurs, par Données > Texte en colonnes, utiliser l'espace comme séparateur, dans la boîte de dialogue. Ainsi tu pourrais avoir en A1 «51 931 298 722» et après la manip 51 en A1, 931 en B1, 298 en C1 et 722 en D1.
    • Point 3 : mauvaise idée de demander ce genre de procédure à l'utilisateur, amha.
    • Point 4 : LibreOffice se comporte comme OpenOffice et comme Gnumeric.
    • Point 5 : d'accord (enfin si on remplace « les deux conditions » par « l'une ou l'autre condition ») et sans oublier que le nombre maximal de chiffres significatifs est 15.

    Cordialement,

  19. #19
    Membre à l'essai
    Bonjour Pekoe,

    oui tu as raison, 'valide' n'était pas le bon terme, 'donne ton avis' aurait été plus indiqué.....
    Merci encore pour ton support.

    Excellente journée