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

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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 ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Voila à quoi ressemble le fichier excel. J'ai filtrer pour seulement avoir les dossier du département 13.
    NUMDEST est déjà connu par la macro. Ex : NUMDEST = "3951"
    Je ne comprends donc pas pourquoi il ne reconnait pas la valeur dans la colonne D...

    Nom : Capture.PNG
Affichages : 1063
Taille : 7,3 Ko

  8. #8
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MartySalade Voir le message
    Je ne comprends donc pas pourquoi il ne reconnait pas la valeur dans la colonne D...
    Sans doute parce qu'une chaine de caractère et une valeur numérique, ce n'est pas la même chose (même si, visuellement, ça peut donner l'illusion).

    J'ai testé ta ligne de code et, à priori, il n'y a rien qui cloche du point de vue syntaxe.
    Donc, comme le disait Fox Mulder, la vérité est ailleurs.

    Es-tu sûr que lorsque la macro est au niveau du Find, ce soit la bonne feuille qui soit active ?
    A tout hasard, mets donc un Debug.Print ActiveSheet.Name juste avant histoire de voir ce que ça renvoie dans la fenêtre d'exécution...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    J'ai vérifié j'ai bien Projets lorsque dans la fenêtre d'execution...

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    pourquoi au post #5 tu recherches en D alors que ton Recherchev() recherchait en B ?

    Par ailleurs tes colonnes B et C sont alignées à gauche.
    Elles contiennent donc des textes.
    Par contre en D c'est bien un numérique (aligné à droite)
    eric

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Et bien parce que la valeur de NUMDEST se trouve dans la colonne D. J'utilisais avant B pour indiquer la Range totale afin qu'il puisse aussi trouver le département
    C'était une erreur ?

  12. #12
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MartySalade Voir le message
    Et bien parce que la valeur de NUMDEST se trouve dans la colonne D. J'utilisais avant B pour indiquer la Range totale afin qu'il puisse aussi trouver le département
    C'était une erreur ?
    Dans un VLookup, la colonne de recherche est toujours (et uniquement) la première colonne de la zone en second paramètre.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Oui merci j'ai pu résoudre le problème. En effet mes range et mes noms de colonnes ne matchaient pas c'est pour cela qu'il ne trouvait pas le bon n° de dossier

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

Discussions similaires

  1. Problème VLOOKUP = #N/A
    Par Kasuus 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