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 VLookUp 2042 [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
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Par défaut Problème VLookUp 2042
    Bonjour à tous

    J'ai besoin de récupérer les 2 informations situé sur la même ligne qu'une variable que je connais
    J'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     client = Application.VLookup(NUMDEST, Sheets("Projets").Range("B2:E4000"), 4, 0)
                    dept = Application.VLookup(NUMDEST, Sheets("Projets").Range("B2:E4000"), 2, 0)
    NUMDEST est un String. Cependant cela ne fonctionne pas. Quand j'utilise le debugger pour mes variables client et DPT j'ai Erreur 2042

    Merci d'avance pour votre aide
    Cordialement,

    Marty

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par MartySalade Voir le message
    NUMDEST est un String.
    Est-ce que c'est une variable VBA, un nom Excel ou autre ?
    Est-ce que la colonne B de ta feuille Excel contient de nombres ou du texte ?

    Est-ce que tes variables clients et dept sont déclarées avec un type compatible avec le contenu respectivement de tes colonnes E et C ?

    j'ai Erreur 2042
    Quel est le message d'erreur ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Par défaut
    NUMDEST est une variable VBA
    La colonne B contient des nombres

    La colonne E contient des string j'ai donc rajouté la ligne : Dim client As String
    La colonne C contient des int j'ai donc rajouté la ligne : Dim dept Integer

    Vu que NUMDEST renvoie un String mais que la colonne B contient des nombres, j'ai donc rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NUMDEST2 = Int(NUMDEST)
    client = Application.VLookup(NUMDEST2, Sheets("Projets").Range("B2:E1000"), 4, 0) 'modification de NUMDEST en NUMDEST2
    dept = Application.VLookup(NUMDEST2, Sheets("Projets").Range("B2:E1000"), 2, 0) 'modification de NUMDEST en NUMDEST2
    J'ai une erreur sur la ligne suivante : client = Application.VLookup(NUMDEST2, Sheets("Projets").Range("B2:E1000"), 4, 0)
    "Incompatibilité de types"

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Juste avant la ligne qui bugue, mets l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Application.VLookup(NUMDEST2, Sheets("Projets").Range("B2:E1000"), 4, 0) 'modification de NUMDEST en NUMDEST2
    Et regarde ce qui s'affiche dans la fenêtre d'exécution juste avant que le bug se déclenche.

    Je pense (sans certitude) que ton problème vient du fait que VLookup ne trouve pas dans la colonne B la valeur contenue dans NUMDEST2 et donc renvoie une erreur qui est un type de données incompatible avec la variable qui la reçoit.

    Perso, je n'aurais pas utilisé VLookup mais la méthode Find de Range.
    Pas sûr que ça trouve la donnée mais la gestion de l'erreur est plus simple.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Par défaut
    J'ai tenté d'essayer plusieurs options avec VLookUp mais sans succès.
    J'ai donc essayé, comme tu me l'as conseillé, la méthode Find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dept = Cells(Columns("D").find(NUMDEST, Range("D2"), xlValues).Row, "C")
    client = Cells(Columns("D").find(NUMDEST, Range("D2"), xlValues).Row, "E")
    J'ai l'erreur suivante "erreur 92 variable objet ou variable bloc with non définie"

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Lis l'aide de la méthode Find, particulier l'exemple. https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

    On utilise pas le résultat de Find en direct.
    On place ce résultat dans un objet de type Range. Ensuite on test si la recherche a été fructueuse avant d'utiliser ce résultat.

    Mais je pense qu'on en revient à ma réponse précédente : le problème est que la fonction de recherche (que ce soit Find ou Vlookup) ne trouve pas la valeur cherchée dans la plage de recherche.
    D'où le conseil que je t'avais donné de vérifier le résultat de cette recherche avec un Debug.Print.

    Je ne sais pas ce que contiennent exactement NUMDEST et ta colonne D, mais le fait que se soient des données de nature différentes (String pour l'un et numérique pour l'autre), c'est loin d'être un gage de victoire.

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

Discussions similaires

  1. Problème VLOOKUP = #N/A
    Par Invité dans le forum Excel
    Réponses: 3
    Dernier message: 09/05/2014, 03h21
  2. Problème avec VLookup
    Par PsychedeChed dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2008, 23h49
  3. Problème de VLOOKUP
    Par GuyRo dans le forum Excel
    Réponses: 2
    Dernier message: 03/12/2007, 12h43
  4. Problème avec VLOOKUP
    Par freyliss dans le forum Excel
    Réponses: 7
    Dernier message: 23/07/2007, 12h02
  5. Problème avec VLookup sous VBA
    Par julio26 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/07/2007, 14h03

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