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 Fonction VlookUp


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Points : 23
    Points
    23
    Par défaut Problème Fonction VlookUp
    Bonjour à tous,

    Je souhaite utilisé la fonction Vlookup sur VBA ; j'ai regardé ici et là mais je n'arrive pas à trouver la syntaxe qui m'arrange.
    Je veux tout simplement chercher une valeur qui se trouve dans un autre classeur dans un autre fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    rng = "\\MCA-SERVEUR\OPCVM\XAVIER\Tests\elise2012.xls"
    rng2 = Workbooks(rng).Sheets(pointagevalo).Range("C1:D100")
    z = WorksheetFunction.VLookup("& x &", rng2, 2, True)
    Mais msg "l'indice n'appartient pas à la selection"

    Des idées ...?

    Merci

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    rng2 ne peut pas fonctionner, Workbooks attend le nom du fichier avec son extension pas le chemin complet !

    De plus, avec ce bout de code tu ne peux pas faire de recherche sur le fichier si il n'est pas ouvert (c'est possible mais plus complexe)
    Ci-dessous un proposition qui devrait solutionner ton problème.
    (Pour info, d'habitude j'utilise .find pour ce genre d'action, à l'occasion regarde, c'est un plus large qu'un Vlookup)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim WsC As Workbook, WsS As Workbook
    Set WsC = ActiveWorkbook 'Défini le fichier actif comme fichier cible
     
    Rng = "\\MCA-SERVEUR\OPCVM\XAVIER\Tests\elise2012.xls"
    Workbooks.Open (Rng) 'Ouvre le fichier (possible de faire sans ouvrir mais plus complexe)
    Set WsS = ActiveWorkbook 'Affecte le fichier à la variable en tant que source
    Set rng2 = WsS.Sheets(pointagevalo).Range("C1:D100") 'pointagevalo est bien une variable ? Sinon faut les ""
    z = WorksheetFunction.VLookup("& x &", rng2, 2, True)
    WsS.Close False 'Ferme le fichier source sans sauver
    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Points : 23
    Points
    23
    Par défaut
    Ok ça marche il fallait rajouter encore un ""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    z = WorksheetFunction.VLookup(""& x &"", rng2, 2, True)
    En revanche j'ai un problème pour appeler cette valeur par la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(1,1).value = "" & z &"" * cells(2,2).value
    Et la message d'erreur : "incompatibilité de type"

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Parfait si ça marche, toutefois quand tu as du temps, penche toi sur la méthode Find, c'est bien mieux qu'un WorksheetFunction.VLookup

    Pour ton autre problème, ça va certainement être un souci de "" également, qu'attend tu comme résultats ?
    Qu'est ce que z et quel type de données trouve tu en cells(2,2) ?
    N'oubliez pas le si votre problème est solutionné.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Points : 23
    Points
    23
    Par défaut
    j'ai appliqué le proverbe "aide toi et le ciel t'aidera"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(10, 6).Value = "=" & z & " * " & Cells(10, 7).Value & ""
    Merci en tout cas. Je regarde si tout tourne bien avant de le mettre en résolu !

  6. #6
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    OK...
    Juste une petite remarque, perso quand je dois mettre une formule, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1,1).formula = ...
    Ca change pas grand chose mais c'est plus clair sur ce qu'on fait.

    D'ailleurs, dois tu absolument avoir la formule ou peux tu n'avoir que la valeur?
    Quand on code, on va éviter au plus de mettre des formules qui alourdissent le fichier

    A+
    N'oubliez pas le si votre problème est solutionné.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Points : 23
    Points
    23
    Par défaut
    Je n'ai pas compris la question

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Tu remplis la celulle A1 avec une formule.
    Est-ce absoument nécessaire, est-ce que le résultat de cette formule va changer entre deux lancements de la macro ?
    Si la réponse est non, je te conseille de calculer le résultat de la formule dans la macro et n'écrire que le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(10, 6).Value = z*Cells(10, 7).Value
    Ici on ne parle que d'une formule, mais j'ai vu des codes qui écrivaient des formules sur des centaines de lignes alors que ce n'était pas nécessaire.

    En espérant avoir été plus clair...
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Points : 23
    Points
    23
    Par défaut
    et bien la valeur de "z" va changer entre 2 macros.

Discussions similaires

  1. [XL-2007] Problème fonction VLookup
    Par manu900 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/02/2012, 09h20
  2. [Toutes versions] Problème pour Coder la fonction vlookup/recherchev en VBA
    Par alexandra1989 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/02/2012, 19h54
  3. [XL-2003] Problème avec la fonction Vlookup
    Par CriCri98 dans le forum Excel
    Réponses: 9
    Dernier message: 19/08/2009, 17h41
  4. Problème avec la fonction "VLookup"
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2008, 09h57
  5. Problème avec la fonction VLookup
    Par pinocchio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2008, 11h59

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