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 :

Peut-on utiliser RECHERCHEV dans une fonction ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut Peut-on utiliser RECHERCHEV dans une fonction ?
    Bonjour!
    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Public Function Budget(celluleSite As Range, celluleTaille As Range, celluleNbImp As Range)
        Dim sSite As String
        Dim sTaille As String
        Dim nNbImp As Integer
     
        Dim refTarifs As Range
        Set refTarifs = ActiveWorkbook.Worksheets(4).Range("A4:H500")
     
        sSite = celluleSite.Text
        sTaille = celluleTaille.Text
        nNbImp = Val(celluleNbImp.Text)
     
        Dim nTarif As Integer
     
        Budget = 0
     
        Select Case sTaille
            Case "---", "0x0", "1x1"
                nTarif = 0
            Case "468x60"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 2, False)
            Case "728x90"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 3, False)
            Case "120x600"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 4, False)
            Case "160x600"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 5, False)
            Case "300x250"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 6, False)
            Case "250x250"
                nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 7, False)
            Case Else
                nTarif = 0
        End Select
     
        Budget = nTarif * nNbImp / 1000
     
    End Function
    Et ça ne fonctionne pas parce qu'en fait, après moulte test dans tous les sens, il ne prend pas en compte les instructions contenues dans les case genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 7, False)
    Alors je me demande si il est effectivement possible d'utiliser la fonction RECHERCHEV dans une function?
    Et si non, comment puis je faire?

    Merci de vos lumières!

    A bientot

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Il faut utiliser le nom anglais de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nTarif = Application.WorksheetFunction.VLOOKUP(celluleSite, refTarifs, 2, False)
    Cordialement,

    Tirex28/

  3. #3
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Merci pour cette reponse mais ce n'est pas ça ..
    Comment puis je verifier que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nTarif = Application.WorksheetFunction.RECHERCHEV(celluleSite, refTarifs, 7, False)
    Me renvoie quelque chose?
    Car quand je mets des Debug.print apres cette ligne, il ne me l'affiche pas donc je presume qu'il doit y avoir un probleme ... mais je ne vois pas ou? Est ce que la syntaxe est bonne?

    Merci de votre aide

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Re,

    VBA ne reconnait que les noms de fonctions en anglais.

    Si ton code ne fait pas ce que tu veux c'est qu'il y a un autre probleme.

    1) Assure toi de repérer toutes les erreurs possibles en insérant ceci au début de ta fonction:
    2) Affiche la fenetre variable locales pour verifier le contenu de tes variables

    3) Execute ta fonction en pas a pas (F8) en lui fournissant des parametres devant la conduire à l'evaluation de ton instruction.

    Cordialement,

    Tirex28/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonjour,

    j ai survolé la discussion
    la fonction find ne serait elle pas + adaptée?

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

Discussions similaires

  1. Utiliser variable dans une fonction
    Par mikael2235 dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2012, 14h39
  2. Réponses: 1
    Dernier message: 13/05/2009, 09h41
  3. Utiliser un " dans une fonction comme séparateur
    Par nuFox dans le forum WinDev
    Réponses: 3
    Dernier message: 18/02/2009, 16h38
  4. Réponses: 1
    Dernier message: 10/12/2008, 19h22
  5. Thread -> Utiliser Synchronize() dans une fonction
    Par Futixu dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/01/2007, 13h13

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