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

Excel Discussion :

Souci d'affichage de date dans une cellule [XL-2010]


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut Souci d'affichage de date dans une cellule
    Bonjour a Tous,
    Je remplis une feuille avec des valeurs extraites d'un fichier texte. Tout se passe bien.
    L'operation est faite avec un module macro VBA.
    Ce tableau me donne une information de date dans une chaine (texte) sous la forme aammdd (annee-mois-jour).
    Je transforme cette information, dans une autre celulle, en une vraie date avec la fonction date : =date(stxt(madatechaine,1,2),stx(madatechaine,3,2),stxt(madatechaine,5,2)).
    en deposant par programme vb, la formule dans la cellule ad'hoc
    sequence VB
    ActiveCell.FormulaR1C1 = "=date(stxt(RC[-7],1,2),stxt(RC[-7],3,2),1)"
    ActiveCell.NumberFormat = "[$-40C]mmm-yy;@"


    a part les soucis lies au fait que Excel est localise france (separateur ";") et que VBA cause anglais (separateur ","),
    quand je vais voir le resultat dans la feuille Excel, j'ai la desagreable surprise de voir la cellule m'afficher #NOM? (message d'erreur connu)
    alors que le contenu de la cellule est correct, que son format d'affichage est correct.

    Et pourtant, il suffit d'afficher le contenu de la cellule dans la zone de saisie (au dessus des numeros de colonnes), d'y cliquer sans rien faire puis de valider le contenu de la cellule avec la coche verte,
    et la, miracle, ma cellule dans le tableau m'affiche bien la date sous la forme recherchee Mois-Annee.

    D'ou ma question : est-ce que "remplir une cellule avec une formule generee par Vba" suffit a ce qu'Excel comprenne le contenu de la cellule ?
    et, apparemment, cela ne pose de souci que dans le traitement de date (ou du moins n'a d'effet visible QUE pour les dates).

    Merci aux sachants,
    Cordialement a tous,
    Caramel13

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 761
    Points : 28 619
    Points
    28 619
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    VBA étant anglais comme tu l'as bien indiqué et sauf si tu utilises la propriété FormulaR1C1Local, dans la formule remplace stxt par mid
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut
    Bonsoir Philippe, et merci de ton retour.

    Negatif, j'ai a peu pres tout essaye dans la macro vba, d'y mettre des mots-cles du langage en francais ou en anglais, les virgules et les points-virgules.
    et sauf erreur ou omission, la meilleure facon de remplir la cellule est celle que j'ai retenue.
    La cellule est bien remplie avec ce que j'aurais tape directement en saisie clavier, en francais, quand la macro se termine.

    Sauf que l'affichage donc ce que l'on voit a l'ecran est ce foutu "#nom?".
    Et qu'il suffit de mettre le curseur dans la zone de saisie et de valider, pour que le resultat s'affiche correctement, sans qu'il y ait eu le moindre changement dans la formule elle-meme ...
    Et Ce n'est pas bloquant, juste penible !!
    Mais je vais quand meme reessayer ...

    Apres essai ...
    detail : j'avais oublie que j'ai fait des modifs (solution de contournement !!) depuis la publication initiale :
    En fait, maintenant, je calcule, dans la macro, la transformation date en chaine (au format aammjj) en date traditionnelle, en utilisant un bon vieux dateserial(aa,mm,jj) qui marche bien.
    et donc ma macro remplit simplement une autre cellule avec ActiveCell.FormulaR1C1 = "=date(year(rc[-7]);month(rc[-7];1)" (dans rc[-7], j'ai la valeur qui etait avant sous forme chaine) et ca fonctionne bien, dans la feuille, la traduction francaise est correctement faite et l'affichage est bon.

    Par contre, si ma macro remplit la cellule avec ActiveCell.FormulaR1C1 = "=date(annee(rc[-7]),mois(rc[-7],1)", la cellule en francais contient le meme texte en francais (c'est bon) mais l'affichage indique a nouveau "#nom?" et on corrige en cliquant dans la zone de saisie.

    Donc, j'ai compris ce qu'il faut faire.
    Mais je me pose alors une question existentielle : Qu'est-ce qui fait que le remplissage d'une cellule par macro soit correct, mais que le resultat vu soit faux ( #nom? indique bien une erreur de fonction non reconnue) et qu'une simple validation manuelle remette les choses en ordre ... ? Que se passe-t-il dans la face cachee d'Excel ?

    A suivre
    Cdlt
    Caramel13

  4. #4
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut
    Correctif rapide :
    evidemment, en francais le separateur est ";" et en anglais "," pour corriger mon laius precedent !!! et que les choses fonctionnent.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 761
    Points : 28 619
    Points
    28 619
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    evidemment, en francais le separateur est ";" et en anglais ","
    En vba, les séparateurs d'arguments sont toujours des virgules et l'écriture des formules dans une ou plusieurs cellules toujours en anglais sauf si tu utilises formulalocal.
    Pour connaître la syntaxe d'une formule pour la transcrire en VBA, surtout quand on imbrique des formules dans des formules, le plus simple est d'encoder la formule à l'aide de l'enregistreur de macros.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut
    Bonjour Philippe,

    et merci de ton commentaire qui m'a force a refaire le point sur la chose.
    ca roule

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

Discussions similaires

  1. affichage de date dans une cellule Excel
    Par darkspoilt dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/08/2007, 10h41
  2. date dans une cellule de jTable
    Par norkoffire dans le forum Composants
    Réponses: 4
    Dernier message: 14/06/2007, 16h27
  3. Affichage type Heure dans une cellule DBGrid
    Par BEN NASR dans le forum Delphi
    Réponses: 2
    Dernier message: 12/05/2007, 08h35
  4. Problème d'affichage de date dans une base de donnée
    Par Gouyon dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/04/2007, 07h57
  5. Affichage lien hypertexte dans une cellule
    Par JACQUEMIN dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/12/2006, 10h36

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