Problème avec macro de recherche

McFly626 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je me permet de vous demander de l'aide concernant un petit problème sur un de mes tableaux Excel.

J'ai une liste d'éléments dans ma feuille 1, comprenant 4 colonnes : Code établissement, Nature de l'article, Quantité, Valeur.

J'ai également en feuille 2, un tableau de deux colonnes : Code établissement, nom de l'établissement.

J'aimerais donc créer une macro commande qui cherche le premier code établissement du tableau de la feuille 2, dans le tableau de la feuille 1, puis qui copie et colle
les lignes du tableau de la feuille 1 comprenant le code établissement recherché, dans les 4 premières colonnes de la feuille 3, et ainsi de suite pour les autres
établissements (établissement 2 à copier et coller dans les 4 premières colonnes de la feuille 4, établissement 3 en feuille 5...).

Est-ce que quelqu'un saurait m'aider s'il vous plait ?

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    En supposant toutes les feuilles déjà existantes
    et les données commençant en A2 avec un titre de colonne en A1
    la macro de recopie peut être :

    Sub recopie()

    Sheets(2).Select
    der = Range("A1").End(xlDown).Row
    For n = 2 To der
    code = Sheets(2).Range("A" & n).Value
    Sheets(1).Select
    der2 = Sheets(1).Range("A1").End(xlDown).Row
    x = 1
    For t = 2 To der2
    If Sheets(1).Range("A" & t).Value = code Then
    x = x + 1
    Sheets(n + 1).Range("A" & x).Value = Sheets(1).Range("A" & t).Value
    Sheets(n + 1).Range("B" & x).Value = Sheets(1).Range("B" & t).Value
    Sheets(n + 1).Range("C" & x).Value = Sheets(1).Range("C" & t).Value
    Sheets(n + 1).Range("D" & x).Value = Sheets(1).Range("D" & t).Value
    End If
    Next t
    Next n
    End Sub

    A adapter en fonction de ton fichier

    Cdlmnt
    0
  2. McFly626 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci pour cette réponse via55, cependant, j'ai oublié de préciser que la colonne du tableau de la feuille 1 contient plusieurs fois les valeurs recherchées, et ce que je cherche à faire c'est lister automatiquement ces valeurs dans les autres feuilles Excel.
    Ne faut-il alors pas utiliser plutôt une fonction boucle For Each... Next ?
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      C'est bien ce que fait ma macro avec For t= 2 to der2 qui examine toutes les lignes du tableau 1 et quand trouve la valeur recherchée (If Sheets(1).Range("A" & t).Value = code) incremente le compteur de ligne (x=x+1) et copie en ligne x de la nouvelle feuille les colonnes du tableau 1 avant de passer à l'examen de la ligne suivante du tableau 1
      Si tu as 5 fois la valeur recherchée dans le tableau 1 tu auras bien 5 lignes recopiées dans la feuille destination
      0
    2. McFly626 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      Très bien, je n'ai pas dû bien adapter ta formule à mon tableau alors. Merci !
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Si tu veux tu peux envoyer un exemple de ton fichier anonymé et allégé si necessaire avec ta macro en passant par cjoint.com et enm'indiquant le lien fourni dans un prochain message, je regarderai ce qui cloche
      Cdlmnt
      0