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 :

fonction personnalisée VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Electricien
    Inscrit en
    Mai 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2018
    Messages : 56
    Par défaut fonction personnalisée VBA
    Bonsoir,

    J'ai utilisé cette fonction personnalisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function concours(pays, nombrefrance, nombreetranger, juges, nombrejuges, certificats, nombrecertificats)
        For i = 1 To pays.Count
            If UCase(certificats(i)) = "OBTENU" Then
                nc = nc + 1
                If pays(i) <> "" Then If UCase(pays(i)) = "FRANCE" Then nf = nf + 1 Else ne = ne + 1
                If juges(i) <> "" Then If InStr(jugesstr, juges(i)) = 0 Then nj = nj + 1: jugesstr = jugesstr & juges(i)
            End If
        Next i
        concours = nf >= nombrefrance And ne >= nombreetranger And nj >= nombrejuges And nc >= nombrecertificats
    End Function
    la fonction est à utiliser dans une cellule excel comme n'importe quelle autre fonction excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =concours(pays, nombrefrance, nombreetranger, juges, nombrejuges, certificats, nombrecertificats)

    pays : est la plage du tableau contenant les pays,
    nombrefrance : est le nombre minimum de certificats obtenus en France nécessaire
    nombreetranger : est le nombre minimum de certificats obtenus à l'Etranger nécessaire
    juges : est la plage du tableau contenant les noms des juges
    nombrejuges : est le nombre minimum de juges différents nécessaire
    certificats : est la plage contenant le statut des certificats
    nombrecertificats : est le nombre minimum de certificats obtenus nécessaire

    Dans cette fonction je voudrais juste qu'elle renvoi Vrai ou Faux quand je l'utilise et je dois pouvoir utiliser le vrai ou faux pour vérifier une autre condition

    Pouvez vous m'aider svp

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir,
    Citation Envoyé par mickaeldu45 Voir le message
    Dans cette fonction je voudrais juste qu'elle renvoi Vrai ou Faux quand je l'utilise
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        concours = nf >= nombrefrance And ne >= nombreetranger And nj >= nombrejuges And nc >= nombrecertificats
    il suffit de mettre ceci en fonction du résultat déterminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    concours = False
    ' ou
    concours = True

  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

    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if concours = nf >= nombrefrance And ne >= nombreetranger And nj >= nombrejuges And nc >= nombrecertificats then true else false
    mais en principe ta formulation devrait fonctionner...

  4. #4
    Membre averti
    Homme Profil pro
    Electricien
    Inscrit en
    Mai 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2018
    Messages : 56
    Par défaut
    Bonjour 78chris

    Tout d'abord merci pour ta réponse j'ai essayé ta proposition mais lorsque je modifie une erreur de compilation apparaît (Attendu : numéro de ligne ou étiquette ou instruction ou fin d'instruction

    Citation Envoyé par 78chris Voir le message
    Bonjour

    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if concours = nf >= nombrefrance And ne >= nombreetranger And nj >= nombrejuges And nc >= nombrecertificats then true else false
    mais en principe ta formulation devrait fonctionner...

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 123
    Par défaut
    Salut

    Essai en mettant des parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    concours = (nf >= nombrefrance) And (ne >= nombreetranger) And (nj >= nombrejuges) And (nc >= nombrecertificats)
    Parfois je pense qu'Excel interprète avec des priorités de calcul que nous n'attendons pas, je doute pourtant que ce soit le cas ici mais après avoir eu quelques mauvaises surprises, je mets des parenthèses quand il y a plusieurs terme dans une expression booléenne.

    Et en précisant le type de la variable de sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function concours(pays, nombrefrance, nombreetranger, juges, nombrejuges, certificats, nombrecertificats) as Boolean
    [Edit]
    Pour l'erreur rencontré avec le code du dessus, c'est parce que tu n'as pas précisé à quelle variable tu voulais attribuer True ou False
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (concours = nf >= nombrefrance) And (ne >= nombreetranger) And (nj >= nombrejuges) And (nc >= nombrecertificats) then concours=true else concours=false
    [/Edit]

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Homme Profil pro
    Electricien
    Inscrit en
    Mai 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2018
    Messages : 56
    Par défaut
    Bonjour Qwazerty,

    J'ai essayé d'utiliser tes lignes de codes mais je n'obtient toujours pas le résultat escompté, je te met en PJ le fichier de mise en situation de la formule :

    En cellule S3 j'utilise ma formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =concours(D4:D6;1;0;L4:L6;3;Q4:Q6;3)
    Lorsque toute mes conditions sont réunies un VRAI apparaît dans la cellule S3

    Dans la cellule S4 j'utilise cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(S3="VRAI";"OK";"NOK")
    Ma question est la suivante : théoriquement si S3 m'affiche VRAI alors S4 devrait me renvoyer OK mais la ce n'est pas le cas pourquoi ?

    Voici le code de ma fonction personnalisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function concours(pays, nombrefrance, nombreetranger, juges, nombrejuges, certificats, nombrecertificats)
        For i = 1 To pays.Count
            If UCase(certificats(i)) = "OBTENU" Then
                nc = nc + 1
                If UCase(pays(i)) = "FRANCE" Then nf = nf + 1 Else ne = ne + 1
                If InStr(jugesstr, juges(i)) = 0 Then nj = nj + 1: jugesstr = jugesstr & juges(i)
            End If
        Next i
        concours = nf >= nombrefrance And ne >= nombreetranger And nj >= nombrejuges And nc >= nombrecertificats
    End Function
    formule personalisé.xlsm

Discussions similaires

  1. [XL-2013] Etiquettes d'aide et fonctions personnalisées VBA
    Par AurelienG_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/01/2018, 10h02
  2. Fonction personnalisée VBA Excel
    Par PM2801 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/05/2014, 20h23
  3. [VBA]Fonction personnalisée avec "If"
    Par FWSMulder dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2008, 23h28
  4. [VBA-E] : Fonction personnalisée moyennes trimestrielles
    Par Geoffray dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/06/2006, 18h25
  5. [VBA-E] Fonction personnalisée moyenne à fin M
    Par Geoffray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2006, 20h58

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