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

API, COM et SDKs Delphi Discussion :

[Excel] Forcer le format en texte


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [Excel] Forcer le format en texte
    Bonjour,

    Je crée un fichier xsl et j'écrit dans les cellules de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      for i := index to index+5 do begin
        for j := 1 to 4 do begin
          MaFeuille.Cells.Item[i,j].Value := String('0'+IntToStr(i)+IntToStr(j));
        end;
      end;
    Seulement, il me formate le texte en numérique alors que je ne le veux pas.

    Je veux qu'il me le force en texte: "01245" (pour des codes postaux par exemple).

    Comment faire ?

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Je crois qu'il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      for i := index to index+5 do begin
        for j := 1 to 4 do begin
          MaFeuille.Cells.Item[i,j].NumberFormat := '@';
          MaFeuille.Cells.Item[i,j].Value := String('0'+IntToStr(i)+IntToStr(j));
        end;
      end;
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour TicTacToe,

    Merci pour ta réponse mais ça ne change rien.

    Si tu sais comment changer le format de toute une colone d'un coup, c'est encore mieux.

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    ah ? moi je l'utilise et ca fonctionne correctement.

    Attention, il faut définir le format de la cellule avant de la remplir a priori.

    Quant a toute une colonne d'un coup, c'est la même chose mais avec un range sur une colonne ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaFeuille.Cells.Item[ ICol, 1 ].EntireColumn.NumberFormat := '@';
    --> MaFeuille.Cells.Item[ ICol, 3 ].Value := '00123'; // devrait fonctionner et laisser les 0 puisque formatée en chaine
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Citation Envoyé par TicTacToe
    ah ? moi je l'utilise et ca fonctionne correctement.
    MaFeuille.Cells.Item[ ICol, 1 ].EntireColumn.NumberFormat := '@';
    --> MaFeuille.Cells.Item[ ICol, 3 ].Value := '00123'; // devrait fonctionner et laisser les 0 puisque formatée en chaine
    Ne marche pas chez moi, je fais exactement ça: (j'ai excel 2002 sp1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      for i := index to index+5 do begin
        for j := 1 to 4 do begin
          MaFeuille.Cells.Item[i,j].EntireColumn.NumberFormat := '@';
          MaFeuille.Cells.Item[i,j].Value := '00123';
        end;
      end;
    Mais ta solution d'éditer et de revalider, je n'ai pu l'essayer car je ne connais pas les fonctions...
    Peux tu me mettre un exemple ?

  6. #6
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    La solution ne serait-elle pas de mettre la valeur numérique i*100 + j, avec un format de cellule 00000 ?

  7. #7
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    dans ton code, le numberformat n'est pas à intégrer dans la boucle puisqu'il fait une colonne entière, mais bon, le problème n'est pas là, cela fait juste perdre du temps.

    Alors c'est vrai qu'en fait, les cas ou j'ai utilisé NumberFormat := '@', derrière je n'alimentais pas mes cellule avec Cell[x,y].value := '123'

    mais en collant du presse-papier des valeurs (plus rapide, d'ailleurs je te le conseille dans ton cas).
    L'alimentation est surement différentes vis-à-vis de Excel entre : effectuer un .value et un .paste

    Je ferai un test avec un .Value pour voir cet aprem.
    sinon, je le fais sur un Excel 2003...


    Nota:
    Mais ta solution d'éditer et de revalider, je n'ai pu l'essayer car je ne connais pas les fonctions...
    Peux tu me mettre un exemple ?
    Non je ne peux pas, j'ai bien précisé que cela n'était pas fait par prog, mais par l'utilisateur dans Excel.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  8. #8
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    En faisant précéder la valeur d'une quote, Excel sait que la valeur est en texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaFeuille.Cells.Item[i,j].Value := '''' + String('0'+IntToStr(i)+IntToStr(j));

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    pour qu'ecxel considere le champs comme texte tu peut le forcer en mettant un apostrophe ' au devant ta valeur

    @+ Phil

  10. #10
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    J'avais pensé à la cote, mais le pb, sur de nombreuse versions d'excel,

    la cote reste mais est bien prise en compte.
    Il suffit juste d'editer la cellule sans la modifier et de la revalider et la cote disparait bien... bug d'excel ?

    Mais en tout cas, ce n'est pas forcément joli à l'affichage et cela déroute l'utilisateur.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #11
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour à tous,

    J'avais essayé la quote, la cellule est bien en texte mais c'est vrai que ce n'est pas propre, il y a des restes.

    C'est bien ça que tu me dit de faire ?
    MaFeuille.Cells.Item[i,j].Value := '''0'+IntToStr(i)+IntToStr(j);
    MaFeuille.Cells.Item[i,j].Value := '0'+IntToStr(i)+IntToStr(j);

    (edit, update ou validate ne marchent pas, j'ai essayé)

    Le resultat est le même...

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

Discussions similaires

  1. Forcer la saisie de texte dans cellule excel
    Par idva5492 dans le forum Excel
    Réponses: 4
    Dernier message: 15/06/2015, 10h32
  2. [PROC] Forcer un format pour import fichier Excel
    Par clao260 dans le forum SAS Base
    Réponses: 3
    Dernier message: 29/08/2013, 13h57
  3. [Excel] Forcer le format de la cellule en php
    Par masseur dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/07/2007, 15h35
  4. [Excel] Formater du texte en nombre
    Par Isa31 dans le forum Excel
    Réponses: 4
    Dernier message: 02/03/2006, 15h48
  5. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27

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