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 :

Type fonction à determiner


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut Type fonction à determiner
    Bonjour à tous,

    VOilà j'ai créer une fonction que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function IsAvancVar(ByVal Delay As Single, ByVal Avanc As Single) As Byte
     
    'cette fonction renvoie vrai si le retard est supérieur à la variable jour de retard choisie
     
    If Delay > Avanc * -1 Then
        IsAvancVar = ""
    Else
        IsAvancVar = 1
    End If
     
    End Function
    Elle fonctionne lorsque elle est égale à 1, mais quand ca doit afficher vide, cela affiche #VALEUR! .
    Je pense donc que cela vient du type définit, puisque Byte est pour du binaire, mais je ne trouve pas lequel mettre à la place. POuvez vous m'aider? Je souhaite qu'elle retourne soit 1, soit rien càd du vide.

  2. #2
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut
    J'ai trouvé toute seule !

    Il fallait définir comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function IsAvancVar(ByVal Delay As Single, ByVal Avanc As Single) As String
    Si ca peut servir!

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Ton 1 va être sous forme de texte...

  4. #4
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut
    Effectivement. Avez-vous une autre solution?
    Merci

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Effectivement. Avez-vous une autre solution?
    peut-être dans l'utilisation (en formule) de cette fonction (en la retypant en byte)
    Mais on ne la vois pas, ta formule ...

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    De façon général il n'est pas sain qu'une fonction renvoie tantôt du texte, tantôt un chiffre.

    Car tout calcul doit pouvoir faire partie d'un enchaînement de calculs...

    Pour ma part je renverrais 0, sachant qu'il y a de multiples possibilités de ne pas afficher les 0.

    Sinon, si tu y tiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function IsAvancVar(ByVal Delay As Single, ByVal Avanc As Single) As Variant

  7. #7
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour tout le monde,

    Je ne comprend pas, tu indiques dans ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'cette fonction renvoie vrai si le retard est supérieur à la variable jour de retard choisie
    Alors pourquoi pas tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function IsAvancVar(ByVal delay As Single, ByVal Avanc As Single) As Boolean
        'cette fonction renvoie vrai si le retard est supérieur à la variable jour de retard choisie
        IsAvancVar = Not delay > Avanc * -1
    End Function
    Ensuite tu peux convertir facilement un boolean en chiffre si besoin via la fonction vb CInt()
    Il faut juste savoir que :
    • CInt(True) vaut -1
    • CInt(False) vaut 0



    Je te propose ces deux tests pour voir le fonctionnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test1()
        Dim delay!, Avanc!
            delay = 3.5: Avanc = -5
            MsgBox IsAvancVar(delay, Avanc)
            MsgBox CInt(IsAvancVar(delay, Avanc)) * -1
    End Sub
     
    Sub test2()
        Dim delay!, Avanc!
            delay = 5: Avanc = -3.5
            MsgBox IsAvancVar(delay, Avanc)
            MsgBox CInt(IsAvancVar(delay, Avanc)) * -1
    End Sub



    Autre chose :

    Citation Envoyé par mmarpaud Voir le message
    Elle fonctionne lorsque elle est égale à 1, mais quand ca doit afficher vide, cela affiche #VALEUR! .
    Je pense donc que cela vient du type définit, puisque Byte est pour du binaire, mais je ne trouve pas lequel mettre à la place. POuvez vous m'aider? Je souhaite qu'elle retourne soit 1, soit rien càd du vide.

    puisque Byte est pour du binaire
    Byte n'est pas 0 ou 1 mais un entier entre 0 et 255. Il ne faut pas faire cette confusion.

    1 bit c'est 0 ou 1
    1 octet c'est 8 bit donc de 00000000 à 11111111 (0 à 255)
    1 byte = 1 octet

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

Discussions similaires

  1. [V8] Mise a jour d'un field de type fonction qui utilise un autre field fonction
    Par chagala dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 29/05/2015, 19h09
  2. Curryfication Type Fonction
    Par Diakt dans le forum Caml
    Réponses: 9
    Dernier message: 08/03/2012, 21h22
  3. foncteur, type fonction, composition
    Par CedricMocquillon dans le forum C++
    Réponses: 8
    Dernier message: 07/05/2009, 19h28
  4. fichier externe type fonctions.js
    Par Dendrite dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/11/2008, 14h36
  5. Fonction de type tableau
    Par Charles f dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2002, 14h04

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