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 :

Erreur 1004 quand je fais appel à la fonction Vlookup [XL-2013]


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
    Consultant fonctionnel
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut Erreur 1004 quand je fais appel à la fonction Vlookup
    Bonjour,

    Je débute dans VBA et je suis face un problème qui me bloque pour la suite de ma macro.

    Malheureusement j’ai un message d’erreur qui apparait à chaque fois que j'utilise la function VLOOKUP et j’ai compris que c’est lorsque qu’il ne trouve pas la valeur dans le tableau « Ref Table ».

    J’ai donc essayé d’inclure une fonction « IFERROR » comme je l’aurais fait sur Excel pour contourner le problème mais ça ne fonctionne toujours pas.

    J'espère que quelqu'un pourra m'aider.

    En vous remerciant par avance.

    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
     
    Dim AxLease As Integer
     AxLease = 1
     
        While MRISheet.Range("D" & AxLease) <> ""
        If MRISheet.Range("C" & AxLease) <> "" Then
        Result = Application.WorksheetFunction.VLookup(MRISheet.Range("A" & AxLease), Sheets("Table Ref").Range("A1:N10000"), 2, False)
     
        MRISheet.Range("B" & AxLease).Value = Result
     
        End If
     
        AxLease = AxLease + 1
     
        Wend

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    ne jamais utiliser WorksheetFunction (Vade Retro Satanas ! ) mais juste Application.VLookup
    en combinant avec une variable de type Variant à tester avec la fonction VBA IsError


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Merci Marc-L pour ta réponse très rapide.
    Cela fonctionne !! J'ai vu pourtant dans un livre pour apprendre le VBA qu'il fallait utiliser "WorksheetFunction"

    Je me permets de t'ennuyer un peu car je débute encore.
    Aurais-tu un conseil pour que je puisse utiliser la fonction "IFERROR" ?

    Le but est de faire apparaitre un message quand on ne trouve pas de valeur dans "Table Ref".

    Merci d'avance.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour
    Aurais-tu un conseil pour que je puisse utiliser la fonction "IFERROR" ?
    De la même manière que tu utilise le vlookup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Application.IfError(vlookup(MRISheet.Range("A" & AxLease), Sheets("Table Ref").Range("A1:N10000"), 2, False), "message")

  5. #5
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Bonjour halaster,

    C'est bizarre ça ne fonctionne pas...

    J'ai un peu changer le code pour concatener mais le principe reste le meme
    J'ai l'impression qu'il ne reconnait pas le "IFERROR" car il n'a pas changé les caractères automatiquement ("iferror" au lieu de "IfError").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Application.iferror(Mid(Application.VLookup(MRISheet.Range("A" & AxLease), Sheets("Table Ref").Range("A1:N10000"), 2, False), 1, 4) & "-" & Mid(Application.VLookup(MRISheet.Range("A" & AxLease), Sheets("Table Ref").Range("A1:N10000"), 2, False), 5, 6), "Pas de lease ID AX")
    Merci à toi.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Tu as surement un soucis de paranthèse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iferror(Mid(Application.VLookup(MRISheet.Range("A" & AxLease), Sheets("Table Ref").Range("A1:N10000"), 2, False), 1, 4)
    si j'ai bien compté le iferror s'arête ici et pas à la fin
    application.iferror est bien reconnu par vba je l'ai testé.

    Edit: en fait si tu enlève tes deux "application." avant les vlookup a l'intérieur du iferror ça semble marcher.

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

Discussions similaires

  1. Erreur 1004 quand macro utilisée depuis un autre classeur
    Par Patdeniraud dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/09/2010, 14h57
  2. erreur SQL lié a un appel de fonction?
    Par ballantine's dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 15/06/2010, 17h13
  3. Réponses: 11
    Dernier message: 30/10/2007, 09h35
  4. Erreur de compilation -> appel de fonction
    Par R'SKaP dans le forum C++
    Réponses: 2
    Dernier message: 04/12/2005, 01h33
  5. [appel de fonction]Erreur bizarre
    Par DEC dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2004, 17h08

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