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 :

vlook up sur un autre classeur [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut vlook up sur un autre classeur
    Bonjour,

    Je dispose d'un fichier (Ajout_ref ci-joint) dans lequel je souhaite compléter la colonne "Imputation" avec les valeurs de la colonne 4 d'un autre fichier (References également ci-joint).
    J'ai pensé qu'il serait plus simple d'utiliser vlookup que de faire des find en recopiant les valeurs trouvées mais je coince malgré des recherches sur le web.
    Voici le code que j'ai écrit
    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
    Option Explicit
    Sub Ajout_ref()
     
    Dim references As Workbook
    Dim L As Integer
     
    Set references = Workbooks.Open("d:\vba\references.xls")
    references.Sheets("Imputation compta").Columns("A:D").Name = "BaseNumeros"
     
    For L = 2 To 6 Step 1
        Cells(L, 4) = Application.WorksheetFunction.VLookup(Cells(L, 1), references.Range("BaseNumeros"), 4, False)
    Next L
     
    references.Close savechanges:=False
    Set references = Nothing
     
    End Sub
    Quelqu'un saurait-il m'éclairer sur ce qui ne va pas ?

    Amicalement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Scrabblouille,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Ajout_ref1()
    Dim references As Workbook
    Dim L As Integer
    Set references = Workbooks.Open("d:\vba\references.xls")
    ref = Right(references.Names("BaseNumeros").RefersTo, Len(references.Names("BaseNumeros").RefersTo) - 1)
    plg = Split(ref, "!")
    x = plg(0)
    y = plg(1)
    For L = 2 To 6 Step 1
        Cells(L, 4) = Application.WorksheetFunction.VLookup(Cells(L, 1), references.Sheets(x).Range(y), 4, False)
    Next L
    references.Close savechanges:=False
    Set references = Nothing
    End Sub
    isabelle

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Bonjour,

    En appliquant directement ton code j'obtiens une erreur 9 (l'indice n'appartient pas à la sélection).
    Par contre en voyant ce que ton code fait en mode pas à pas j'ai eu l'idée de remplacer le x et le y directement par le nom de la feuille et la plage de recherche et du coup ça fonctionne à condition d'avoir réactivé la feuille de mon classeur "Ajout_ref".

    D'où ma nouvelle question : est-il possible d'ouvrir un classeur sans l'activer ?
    Si ce dernier point ne peut être réalisé ce n'est pas grave puisque j'obtiens bien ce que je souhaite avec le code ci-dessous.

    Merci pour ton aide.
    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
    Sub Ajout_ref()
     
    Dim references As Workbook
    Dim L As Integer
     
    Set references = Workbooks.Open("d:\vba\references.xls")
    Workbooks("Ajout_ref").Worksheets("A_completer").Activate
     
    For L = 2 To 6 Step 1
        Cells(L, 4) = Application.WorksheetFunction.VLookup(Cells(L, 1), references.Sheets("Imputation compta").Range("$A:$D"), 4, False)
    Next L
     
    references.Close savechanges:=False
    Set references = Nothing
     
    End Sub

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Scrabblouille,

    en ouvrant le classeur, même si celui-ci est activer,
    tu peut redonner le focus au classeur contenenant la macro,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set references = Workbooks.Open("c:\test.xls")
    ThisWorkbook.Activate 'redonner le focus au classeur appelant
    'suite de la macro...
    isabelle

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Salut Isabelle,

    Ma macro sera dans le fichier perso.xls car les fichiers que je mets en forme sont en fait des csv qui me parviennent de diverses sources.
    J'identifie mon fichier avant l'ouverture de celui contenant les références et le réactive après, ça va très bien comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NomFichier = ActiveWorkbook.Name
    Set references = Workbooks.Open("h:\truc\machin.xls")
    Workbooks(NomFichier).Activate
    Mon traitement complet fonctionne maintenant.

    Encore merci et joyeuses paques.
    Daniel.

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

Discussions similaires

  1. [XL-2003] Optimisation de macro travaillant sur d'autres classeurs
    Par diude54 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/09/2009, 09h35
  2. [Toutes versions] recherchev sur un autre classeur avec onglet variable
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2009, 16h28
  3. Gérer une variable ou un object sur un autre classeur
    Par TomRay dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/10/2008, 11h54
  4. Un refEdit pointant sur un autre classeur
    Par Skieur38 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/07/2008, 10h32
  5. Enregistrer une feuille Excel sur un autre classeur
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2008, 16h41

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