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 :

VLOOKUP VBA probleme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut VLOOKUP VBA probleme
    Bonjour a tuos
    j'ai un problème sur VBA, j'aurai aimé savoir si vous pouviez m'aider.

    je suis entrain d'automatiser un reporting, et sur 1 colonne, je fais un recherche v qui va me chercher des données sur un fichier externe.
    cette manoeuvre, je la fais 5 fois, je l'ai fait via l automatisation de macro.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        Range("BS3").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-69],'[Extract - EUR - Tuesday, January 15, 2013.xlsx]ODS'!C3:C52,50,FALSE)"
        Range("BS3").Select
        Selection.FillDown
        ActiveWindow.SmallScroll Down:=-200
     
        Range("BT3").Select
        ActiveCell.FormulaR1C1 = _
            "=(VLOOKUP(RC[-70],'[Extract - EUR - Tuesday, January 15, 2013.xlsx]ODS'!C3:C55,53,FALSE)/RC[-1])"
        Range("BT3").Select
        Selection.FillDown
        ActiveWindow.SmallScroll Down:=-200
     
        Range("BU3").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-71],'[Extract - EUR - Tuesday, January 15, 2013.xlsx]ODS'!C3:C32,30,FALSE)"
        Range("BU3").Select
        Selection.FillDown
        ActiveWindow.SmallScroll Down:=-200
     
        Range("U3").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[-6]=""EUR"",RC[-1],RC[-1]/VLOOKUP(RC[-6],'[Extract - EUR - Tuesday, January 15, 2013.xlsx]Conversion Rate'!C1:C2,2,FALSE))"
        Range("U3").Select
        Selection.FillDown
        ActiveWindow.SmallScroll Down:=-200
    je ne sais pas si c est le bon, mais j arrive pas à le compiler.

    Merci enormement par avance pour votre aide.

    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Pourquoi utilises-tu FormulaR1C1 alors qu'il existe en VBA la fonction VLookup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("BS3") = WorksheetFunction.VLookup(...)
    Je n'aime pas trop manipuler "Formula", mais à ta guise si tu le souhaites.
    Malgré cela, avec FormulaR1C1 tu peux y arrivé, d'où ma question, que places-tu exactement comme paramètre ? A quoi veux-tu aboutir ?

    J'ai du mal avec le "RC[-69]" par exemple. Je pense qu'il y a plus simple. Tu veux pointer 69 colonnes sur la gauche de le celulle active, c'est ça ?

    "[Extract - EUR - Tuesday, January 15, 2013.xlsx]ODS'!C3:C52" => ton fichier "Extract - EUR - Tuesday, January 15, 2013.xlsx" est-il ouvert lors de l'éxecution de ta macro ?

    En bref, tu veux comparer ce qu'il y a dans une cellule 69 colonnes à gauche de BS3 avec le tableau qui se trouve dans ton fichier Extract - EUR - Tuesday, January 15, 2013.xlsx sur la range "C3:C52" et placer en BS3 la valeur de la 50ème colonne de ce tableau ?

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Ensuite, il y a un problème avec "FillDown". En effet, cette fonction recopie la première ligne de ta Range sur toute la selection.

    Puisque ta range n'est qu'une seule case, il y a un problème. ^^

    Dernier point : "ActiveWindow.SmallScroll Down:=-200". Tu fais un scroll down négatif ? Donc un scroll up en bref ? =D

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    au fait, j aimerai à la fin faire un "ActiveWindow.SmallScroll Down:=-200".
    pour donner à chaque cellule de la colonne sa valeur associé.

    et c est exact ce que tu dis pour le filldown.

    Saurais tu comment arranger la macro stp?

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub fill()
    'Place après Filemane le nom COMPLET (avec le chemin) de ton classeur
    Workbooks.Open Filename:="C:\Users\...\Desktop\Extract - EUR - Tuesday, January 15, 2013.xlsx"
     
    'Pour répondre à te besoin que je n'ai pas saisi
    n = 50
     
    'Avec ton classeur d'origine (dont je n'ai pas le nom), avec ta feuille d'origine (dont je n'ai pas le nom, non plus)
    With Workbooks("test").Worksheets("test")
        'Tu te places en BS3
        'puis tu réalises ta fonction VLookup
        'Premier arg : ta range BS3 avec un offset de 69 colonnes - tu peux également placer en "dur" la range souhaitée soit B3 si je calcul bien
        'Deuxième arg : avec ton autre classeur, dans l'onglet ODS, sur la bonne Range => explication en dessous
        'Troisième arg : ta colonne - 50
        .Range("BS3") = WorksheetFunction.VLookup(.Range("BS3").Offset(0, -69), Workbooks("Extract - EUR - Tuesday, January 15, 2013.xlsx").Worksheets("ODS").Range("A2:BV19"), 50, False)
     
        'Et là, le "FillDown" comme je ferais avec n = le nombre de fois que tu veux recopier ta cellule
        For i = 1 To n
            .Range("BS3").Offset(i, 0) = .Range("BS3")
        Next i
    End With
     
    'Et tu fermes ton classeur sans sauvegarder
    Workbooks("Extract - EUR - Tuesday, January 15, 2013").Close SaveChanges:=False
     
    End Sub
    A toi de faire le reste, j'ai fais sur ton premier élément, j'ai testé ça fonctionne. Si ca ne fonctionne pas de ton côté c'est qu'un argument a dû mal être placé.

    Je te donne un exemple : tu as une range "C3:C52" - c'est-à-dire un tableau avec 1 seule colonne... Comment veux-tu aller chercher là 50ème ?

    Bref tiens moi au courant si mes explications ne sont pas suffisament claire !

    EDIT : ajoute le Scroll, je ne l'ai pas implémenté.
    au fait, j aimerai à la fin faire un "ActiveWindow.SmallScroll Down:=-200".
    pour donner à chaque cellule de la colonne sa valeur associé.
    Ou un Scroll up, c'est ce que je te dis : ActiveWindow.SmallScroll Up:=200.
    Mais as-tu bien compris ce qu'un un scroll ? => "pour donner à chaque cellule de la colonne sa valeur associé" => Qu'est-ce que cela signifie ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    bonjour Limy-Ire et merci de ton aide precieuse.

    "[Extract - EUR - Tuesday, January 15, 2013.xlsx]ODS'!C3:C52" => mon fichier "Extract - EUR - Tuesday, January 15, 2013.xlsx" onglet ODS.
    il n'est pas forcement ouvert.
    sinon je sais que je peux le faire avec nom=ActiveWorkbook.Name pour aller rechercher le fichier.

    En bref, tu veux comparer ce qu'il y a dans une cellule 69 colonnes à gauche de BS3 avec le tableau qui se trouve dans ton fichier Extract - EUR - Tuesday, January 15, 2013.xlsx sur la range "C3:C52" et placer en BS3 la valeur de la 50ème colonne de ce tableau ?
    Excellente analyse, c'est exactement ce que je cherche a faire.

    MERCI ENCORE UNE FOIS

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

Discussions similaires

  1. [XL-2010] vlookup vba probleme
    Par paul lefebvre dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/01/2014, 14h42
  2. [VBA] Problem de suppression de composant
    Par jesus144 dans le forum IHM
    Réponses: 9
    Dernier message: 26/04/2006, 10h03
  3. [VBA]probleme : erreur 2001 operation annulée
    Par julio78 dans le forum Access
    Réponses: 6
    Dernier message: 09/01/2006, 15h21
  4. [VBA] Probleme de caractères spéciaux dans nom de classeur
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2005, 19h13
  5. Réponses: 10
    Dernier message: 13/06/2005, 16h02

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