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 :

Est-il possible de formater ce que renvoie une fonction ? [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Est-il possible de formater ce que renvoie une fonction ?
    Bonjour,

    Est-il possible de formater ce que renvoie une fonction ?

    Exemple. La fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Temps_Trajet(Distance As Integer, Vitesse As Integer) As Date
        Temps_Trajet = Format(Distance / Vitesse / 24, "hh:mm:ss")
    End Function
    Me renvoie 0,083333333 lorsque j'utilise cette fonction dans une feuille de calcul en passant en paramètre 100 en distance et 50 en vitesse : =TempsTrajet(100;50)

    Et lorsque je passe sur la feuille de calcul, la cellule au format "hh:mm:ss", j'obtiens bien "2:00:00".

    Donc, mon formatage n'est pas du tout pris en compte...


    Ai-je fais une erreur ? Ou bien est-il impossible de formater la valeur renvoyer par une fonction ?

    D'avance, merci

  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 922
    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 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une formule personnalisée dans excel ne peut renvoyer qu'une valeur ou une matrice de valeurs.
    Si tu souhaites renvoyer une valeur formatée tu le peux en changeant le type de la fonction comme String et plus comme Date mais alors la valeur renvoyée ne sera plus une heure au sens où Excel le traite c'est à dire une valeur décimale.
    Comme j'imagine que ce n'est pas ce que tu attends, tu dois formater au préalable la colonne qui doit contenir ta formule au même titre que n'importe quelle formule d'excel. Cependant si tu formates la première cellule de la colonne, automatiquement en copiant la formule le format sera recopié.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    c'est normal tu formate dans la fonction et en memetemps tu lui donne un format as date
    donc resultat dans la fonction c'est bon mais des que l'on en sort ca redeviens une date avec jour mois année heure minute secondes
    et comme la date n'est pas renseigné ca te sort une date préhistorique

    voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    [A1] = Temps_Trajet(400, 2)
    End Sub
     
    Function Temps_Trajet(Distance As Long, Vitesse As Long)
      'MsgBox CDate(Distance / Vitesse / 24)
        Temps_Trajet = Format(CDate(Distance / Vitesse / 24), "hh:nn:ss")
    End Function
    [edit]: excuse philippe on s'est croisés

    ou alors si comme philippe te l'a dit ,si tu veux que ta cellule soit formatée se sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    [A1] = Format(Temps_Trajet(400, 2), "hh:nn:ss")
    End Sub
     
    Function Temps_Trajet(Distance As Long, Vitesse As Long)
      'MsgBox CDate(Distance / Vitesse / 24)
        Temps_Trajet = CDate(Distance / Vitesse / 24)
    End Function

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    OK. Merci Philippe pour cette limpide réponse Merci Patrick également

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2015, 16h47
  2. Est-il possible de formater la saisie d'un TextBox ?
    Par altropus dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 09/12/2009, 16h00
  3. [AC-2007] Est-il possible de simuler ce que sera l'appli en mode runtime ?
    Par tibofo dans le forum Runtime
    Réponses: 4
    Dernier message: 21/10/2009, 16h16
  4. Question : Que renvoie une fonction ou un Sub
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2007, 14h36
  5. [applet]récupérer ds un post ce que renvoie une méthode java
    Par BouB dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/02/2006, 11h37

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