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 :

Problème avec VLookup sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 38
    Par défaut Problème avec VLookup sous VBA
    Salut à tous,
    J'ai un problème que je n'arrive pas à résoudre et pourtant j'ai l'impression d'avoir tout essayé.

    J'ai un fichier excel dans lequel dans la colonne A il y a des dates et dans la colonne B les cours d'une action correspondant.
    J'ai le petit programme 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
     
     
    Function payOff(dateDebut As Date, cellACote As Range) As Variant
    On Error GoTo gestionErreur:
     
    Dim coursFinAnnee1, coursFinAnnee2, coursFinAnnee3, x As Double
    Dim position As Integer
    Dim dateFin1, dateFin2, dateFin3 As Date
    dateFin1 = DateAdd("yyyy", 1, dateDebut)
    dateFin2 = DateAdd("yyyy", 2, dateDebut)
    dateFin3 = DateAdd("yyyy", 3, dateDebut)
     
     
    coursDebut = cellACote.Offset(0, -1).Value
     
    coursFinAnnee1=Application.WorksheetFunction.VLookup(dateFin1, Range("A1:B2017"), 2,0)

    Ce code ne marche pas...J'ai tracé l'erreur suivante:
    unable to get the VLookup property of the worksheetfunction class

    Alors j'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    coursFinAnnee1 = Application.VLookup(dateFin1, Range("A1:B2017"), 2, 0)
    Mais si j'affiche les variables en mode debug, je vois que dans coursFinAnnee1 j'ai "Error 2042".

    Est-ce que quelqu'un peut m'aider?
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Peut être une piste
    Erreur 2042 c'est la valeur que retourne la formule si elle ne trouve rien.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 38
    Par défaut
    Merci pour ta réponse.
    Le truc c'est que si je fais le VLookUp dans excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLOOKUP(A256;$A$4:$B$2017;2;0)
    là ça me retourne bien une valeur. J'ai bien vérifié et la valeur de la variable
    dateFin1
    est la bonne et elle est présente dans la colonne A...

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    ca a peut etre une incidence, mais ta variable dateFin1 est de type variant et non de type date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim dateFin1, dateFin2, dateFin3 As Date
    il faut plutot delcarer comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dateFin1 as Date, dateFin2 as Date, dateFin3 As Date

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 38
    Par défaut
    J'ai corrigé en ajoutant un as Date partout mais j'ai toujours la même erreur (2042)...

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    essai en forcant dans ta formule la valeur recherchée.
    Une valeur existante dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coursFinAnnee1=Application.WorksheetFunction.VLookup("01/01/2007", Range("A1:B2017"), 2,0)

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

Discussions similaires

  1. Problème avec open() [Excel VBA]
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21
  2. Problème avec EInOutError sous delphi 2005
    Par Teb dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2005, 11h48
  3. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33
  4. Problème avec glutFullScreen() sous linux...
    Par MaxPayne dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/11/2004, 11h30
  5. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02

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