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 :

[XL-2010] Vlookup en VBA


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
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Par défaut [XL-2010] Vlookup en VBA
    Bonjour la communauté,

    Tout d'abord je tiens à dire que je suis un gros débutant du VBA et que ma question concerne peut-être un code de 4 lignes mais voila j'ai trouver la réponse nul-part..

    Voila mon problème. J'aimerai feeder mensuellement une partie d'une base de données à partir d'une autre base de données. Les base en questions fonctionnent comme un tableau à double entrée il y a un identifiant dans la première colonne et un identifiant en premiere ligne pour chaque colonne. Les deux sont dans le même classeur sur des sheet différente (disons sheet1 pour la base de donnée réceptrice et sheet2 pour la base de donnée qui va donné).

    Je pourrais donc faire un simple vlookup dans les colonnes concernée de la sheet1 malheureusement la base qui doit être feeder ne peut pas contenir de formule.

    Je n'ai pas trouver de bout de code duquel je pourrais commencer et je suis malheureusement trop débutant pour partir "from scratch". Quelqu'un pour aider un débutant ? Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Sillystick Voir le message
    je suis malheureusement trop débutant pour partir "from scratch". Quelqu'un pour aider un débutant ? Merci d'avance.
    Dans Excel, et Word, il y a un enregistreur de macros pour t'aider à commencer. C'est un peu long à expliquer ici, mais, il y a la marche à suivre dans ton aide.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Si un VLookUp peut servir, tu pourrais générer ces formules par code, si nécessaire, et les remettre en valeur par la suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("B2:B" & nbLignes).Formula = "=VLOOKUP(.....)"
    Range("B2:B" & nbLignes).Copy
    Range("B2:B" & nbLignes).PasteSpecial xlPasteValues
    Ça te copiera ta formule dans toute ta colonne de données et la mettra en valeur par la suite. Il s'agit juste de faire attention aux "$" dans les adresses.

    Il y a aussi possibilité de passer par WorksheetFunction.VLOOKUP
    À voir dans ton aide...

    Autrement, il te faudrait boucler lignes et colonnes et ça risque d'être pas mal plus long, selon moi...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Par défaut
    Merci pour ta réponse parmi,

    j'ai essayer d'adapter ton code comme suit:
    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
     
    Sub copy()
    Dim i As Variant
    Dim b As Variant
     
     
    b = Worksheets("Page5_1").Range("A3:h106")
     
     
    For i = 3 To 7
     
    Worksheets("sheet1").Select
    Range("B" & i) = WorksheetFunction.VLookup(Range("A" & i), b, 2)
    Next i
    Range("B2:B" & 7).copy
    Range("B2:B" & 7).PasteSpecial xlPasteValues
     
     
     
    End Sub
    Seulement adapter ce code pour les 4000 lignes sera vite fais mais pas pour les 25 colonnes... est ce que par hasard quelqu'un aurait une idée de code plus "léger" ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si tu es capable d'écrire tes formules dans ta feuille, tu peux aussi le faire dans le code.

    Aucun besoin de boucle là-dedans...


    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
    Sub Copie()
        Dim nbLignes As Long
     
        Application.Calculation = xlCalculationManual 'passe en mode calcul manuel
     
        Worksheets("sheet1").Activate   'Pas vraiment nécessaire si on la nomme expressément...
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
     
        Range("B3:B" & nbLignes).Formula = "=VLookup(A3, Page5_1!$A$3:$H$106, 2, FALSE)"
        Range("C3:C" & nbLignes).Formula = "=VLookup(A3, Page5_1!$A$3:$H$106, 3, FALSE)"
        Range("D3:D" & nbLignes).Formula = "=VLookup(A3, Page5_1!$A$3:$H$106, 4, FALSE)"
     
        Application.Calculation = xlCalculationAutomatic 'passe en mode calcul automatique pour mettre à jour les formules une seule fois
     
        Range("B2:Z" & nbLignes).copy
        Range("B2:Z" & nbLignes).PasteSpecial xlPasteValues
     
        Range("A1").Select
        Application.CutCopyMode = False
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Par défaut
    Merci parmi ton code marche à ravire ! J'ai d'autre question mais je pense ouvrir une nouvelle discussion car ce n'est plus relater à cette problèmatique.

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

Discussions similaires

  1. [XL-2003] Utilisation de VLOOKUP en VBA
    Par oinjetam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/02/2016, 17h13
  2. Vlookup en VBA
    Par faamugol dans le forum Excel
    Réponses: 6
    Dernier message: 21/07/2015, 15h46
  3. Aide sur VLOOKUP dans vba
    Par Mag555 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/08/2011, 14h35
  4. [XL-2003] Vlookup dans VBA
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/11/2010, 16h15
  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