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 :

recherche dans une base de donnees; copier coller via une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut recherche dans une base de donnees; copier coller via une macro
    Bonjour à tous,

    Je suis en train de programmer une base de données sur EXCEL mais ne maitrise pas le VBA. J'ai une premiere page ou je rentre des codes barres dans une colonne, suivi par 5 criteres (colonne 2: noms colonne 3: famille colonne 4: sous famille ...) c'est ma base de données.
    Sur ma deuxieme page, je souhaite saisir dans une case de la colonne 3 un code barre ( existant sur la premiere feuille) et j'aimerais voir apparaitre automatiquement les 5 criteres dans les cases suivantes, critères qu'on irait chercher dans la page 1 . (une histoire de copier coller de cellules entre deux feuilles; il me faut creer une boucle sur les valeurs de ma premiere colonne page 1, et chercher dans cette liste la valeur que j'ai saisie page 2 colonne 3 ligne X puis executer le copier coller)

    Est ce possible?
    connaissez vous les lignes de code qui m'ammeneraient à ce résultat?

    En vous remerciant tous pour votre aide,

    Cordialement Yann

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour et bienvenue,

    Il n'est pas nécessaire d'utiliser les boucles, et bien plus performant d'utiliser les outils de recherche à ta disposition.

    Trois solutions parmi d'autres:

    1) Tu passes la formule RechercheV en VBA dans les cellules adjacentes de la cellule qui contient la valeur de recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      ActiveCell(1, 2).Formula = "=vlookup(" & ActiveCell.Address(0, 0) & ",donnees,2,0)"
      ActiveCell(1, 3).Formula = "=vlookup(" & ActiveCell.Address(0, 0) & ",donnees,3,0)"
      ...
    Avantage: Si tu changes la valeur en Excel, comme tu as une formule, les valeurs s'adaptent.

    2) Tu évalues la fonction RECHERCHEV. ici, j'ai utilisé une plage nommée Donnees représentant ta "table de données"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Recherche1()
      ActiveCell(1, 2).Value = Evaluate("vlookup(" & ActiveCell.Address & ",Donnees,2,0)")
      ActiveCell(1, 3).Value = Evaluate("vlookup(" & ActiveCell.Address & ",Donnees,3,0)")
      ...
    End Sub
    Avantage: Pas d'arrêt sur une donnée non trouvée

    3) Tu peux aussi effectuer une recherche dans la première colonne de ta base, puis récupérer les valeurs des cellules à droite. J'ai considéré que tes données démarraient en colonne A d'une feuille nommée Données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Recherche()
      Dim CelluleCible As Range, CelluleSource As Range
     
      Set CelluleCible = ActiveCell
     
      Set CelluleSource = Worksheets("données").Range("a:a").Find(what:=CelluleCible.Value, LookIn:=xlValues, lookat:=xlWhole)
      If Not CelluleSource Is Nothing Then
        CelluleCible(1, 2) = CelluleSource(1, 2)
        CelluleCible(1, 3) = CelluleSource(1, 3)
        ...
      End If
    End Sub
    Avantage: Tu peux intercepter dans le Else le fait que la valeur n'est pas trouvée

    Code lancé en fonction de la cellule active, à adapter à ton cas.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut
    Ohhh Mille mercis!!

    Je vais tenter d'appliquer tout cela à ma programmation et vous tiens au courant des résultats!

    A charge de revanche (mais certainement pas sur le meme forum "macro VBA" ;-)

    Cordialement Yann . .

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2015, 23h10
  2. [Toutes versions] Lier une base Access 97 à des tables d'une base Access 2010
    Par jehhej dans le forum Modélisation
    Réponses: 2
    Dernier message: 03/01/2014, 15h48
  3. Créer une recherche dans excel suivi d'un copier/coller
    Par Phoenix311 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2012, 17h19
  4. Réponses: 60
    Dernier message: 03/12/2010, 20h03
  5. Réponses: 5
    Dernier message: 08/01/2009, 16h05

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