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 :

comment creer une fonction en VBA heur-heur*le prix


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 2
    Points
    2
    Par défaut comment creer une fonction en VBA heur-heur*le prix
    j'ai realiser ca avec excel (la formule en excel est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(d2>0;heure(d2)*60+minute(d2);0)
    mais je n'arrive pas a le realise avec VBA et sur les cellule de A2:A100, B2:B100 C2:C100
    et merci d'avance

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour

    c'est sensiblement la meme chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        a = 0
        if target> 0 then a = Hour(Target) * 60 + Minute(Target)
    target est la cellule ou se trouve l'heure, a est la variable qui recoit de resultat

    si tu saisis par une Userform --> textbox1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim tps as date, a as integer
    tps = cdate(textbox1.value) ' transforme en format horaire
    a = 0
    if tps>0 then  a = hour(tps) * 60 + minute(tps)
    joyeux noel

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    voir « IIf »

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Bon...

    une heure, c'est un nombre (comme une date), qui est une fraction de 1

    1/24 = 1 heure
    1/1440 = 1 minute
    1/86400 = 1 seconde

    La partie entière d'un nombre représente une date.

    donc, déjà, ta fonction Si ne sert à rien, puisque si ta cellule est vide, l'heure sera à 0, les minutes aussi, et donc le résultat sera 0.
    Tu pourrais donc te contenter de ta formule, sans le SI.

    Ensuite, comment t'y prendre en VBA ?
    1. poser le raisonnement en français
    2. transformer en code
    J'ai un nombre dont j'ignore la taille
    Seule la partie décimale m'intéresse
    Je dois donc d'abord retirer la partie entière.
    Une fois la partie entière retirée, j'aurai un nombre de jours (une fraction, mais l'unité est en jours), qu'il me faut convertir en minutes, la partie entière de ce résultat représentera les minutes, la partie décimale les secondes.
    Les secondes ne m'intéressant pas, je ne dois garder que la partie entière.

    Ceci se traduit par cette formule où DT représente le nombre de Date/Heure à analyser

    Maintenant qu'on a la formule, il faut faire une fonction

    Dans un module, tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function MyMinutes (DT as Date) as Long
    '-------------------------------------------------------------------------------
    ' Fonction MyMinutes
    ' Cette fonction reçoit un argument DT de type date
    ' Elle renvoie un nombre entier long représentant le nombre de minutes de la date DT
    '-------------------------------------------------------------------------------
        MyMinutes=int((DT-int(DT))*1440)
    End Function
    Si tu veux pouvoir utiliser cette formule dans n'importe quel classeur, tu devrais enregistrer ce classeur en tant que Macro Complémentaire et charger la macro complémentaire ainsi créée.

    Son usage :
    Dans une cellule, tu peux, par exemple, faire :
    =MyMinutes(A1)
    et recopier cette formule sur ta colonne A1:A100

Discussions similaires

  1. [XL-2013] comment creer une fonction en VBA pour faire concatenate et right voir exemple
    Par Abourarda dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2014, 21h56
  2. Réponses: 0
    Dernier message: 12/06/2008, 16h57
  3. comment creer une fonction en VBA heur-heur x le prix
    Par bolton100 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/12/2007, 01h49
  4. Réponses: 8
    Dernier message: 30/08/2006, 10h08
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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