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 :

Macro Vlookup avec plusieurs tables matrices


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
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Par défaut Macro Vlookup avec plusieurs tables matrices
    Bonjour,

    Je cherche à mettre en place sur mon fichier une macro qui permettrait de remplir des champs dans mon tableau.

    Je m'explique :
    j'ai fait une premier macro qui me permet de faire une recherche dans la premiére base données si elle ne trouve pas la données, je souhaiterais que la recherche se fasse dans la 2éme base de données.

    Si vous avez un code assez simple afin que je puisse l'adapter sur mon fichier.

    Merci

  2. #2
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Set c = 1ere zone.Find("donnée a chercher", LookIn:=xlValues, LookAt:=xlWhole)
     If Not c Is Nothing Then 
     ligne = c.Row
     else
     Set c = 2eme zone.Find("donnée a chercher", LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then ligne =c.row
    end if
    Ligne etant le numero de la ligne ou se trouve ta recherche.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Par défaut
    Merci pour le code, mais malheureusement il me fait une erreur de syntaxe.

    Voici les modifications que j'ai faites:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Set c = 1ere zone.Find("PC MA LOC", LookIn:=xlValues, LookAt:=xlWhole)
     If Not c Is Nothing Then
     ligne = c.Row
     Else
     Set c = 2eme zone.Find("INVENTORY", LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then ligne = c.Row
    End If
    End Sub
    la recherche ci-dessous fonctionne, mais quand je fais la même chose avec le feuille 2 du coup il remplace les valeurs trouvées sur la feuille 1 par les valeurs non trouvées sur la feuille 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    With Sheets("Sheet1")
        .Range("F2:F200").Value = WorksheetFunction.VLookup(.Range("E2:F200").Value, Sheets("MA PC LOC").Range("A2:AJ21810"), 2, False)
    End With
    End Sub
    Je vais essayé de creuser ce soir, un peu d'aide ne serait pas de refus.

    Merci

  4. #4
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    heu, il faut replacer 1erzone et 2emezone par un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuil").range("a1:b3")
    pour que "find" sache dans quel plage de cellule chercher la valeur demandée

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Par défaut
    voici ce que j'ai mis, mais aucun résultat pas même de message d'erreur. Le code doit être bon mais pas pour ce que je recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub()test
    Set c = Sheets("Sheet1").Range("E2:E200").Find("PC MA LOC", LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
    ligne = c.Row
    Else
    Set c = Sheets("INVENTORY").Range("E2:E200").Find("INVENTORY", LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then ligne = c.Row
    End If
    End Sub
    Il faudrait que j'arrive à faire un Vlookup classique sauf que je dois ajouter le paramètre " si je ne trouve pas la valeur voulu dans la table 1 je recherche dans la table 2 "
    si je trouve la solution pour une colonnes pour les autres ça devrait être simple non ?
    L'idée c'est de mettre un valeur pour obtenir les informations dans une cellule.

    Je creuse et je crois que je suis presque arrivée au centre de la terre help !

    Je précise que la valeur chercher se trouve dans chaque table en colonnes A et que l'information voulu se trouve sur les lignes B2 ou B9 etc....

  6. #6
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour, d'après votre code, la recherche s'effectue dans la colonne E.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set c = Sheets("Sheet1").Range("E2:E200").Find("PC MA LOC", LookIn:=xlValues, LookAt:=xlWhole)
    'feuille (sheets1).cellule e2:e200. rechercher(pcmaloc)
    If Not c Is Nothing Then
    'si PCmaloc est trouvée
     ligne = c.Row
    'renvoyé le n° de ligne
    de remplir des champs dans mon tableau.
    Une fois la donnée rechercher trouvée, on peut renvoyé la valeur de n'importe quelle cellule de la ligne vers n'importe ou(userform, autre feuille, autre endroit dans la feuille)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sheets("tableau").cells(1,1).value = sheets("sheet1").cells(ligne,2).value.
    'feuille (tableau).cellule A1=feuille("sheet1").cellule B et le numero de ligne ou était la valeur rechercher dans la colonne E.
    Si tu mettais ton code pour voir comment on peut l'arranger.

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

Discussions similaires

  1. mysql_fetch_object avec plusieurs tables
    Par AlphaYoDa dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/04/2007, 14h48
  2. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42
  3. [VB 2005]Dataset avec plusieurs tables
    Par estelledany dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/05/2006, 14h25
  4. [MySQL] requete avec liaisons avec plusieurs tables
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/03/2006, 22h21
  5. historique avec plusieurs table
    Par Cybher dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/08/2005, 16h38

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