Macro Recherchev

GenieIngenieur Messages postés 18 Statut Membre -  
 Maurice -
Bonjour tout le monde,

Je suis débutante en VBA et j'ai vraiment besoin de votre aide.

En effet, j'ai deux GROS tableaux dans deux feuilles différentes (Mais sur le mm Classeur). Le premier tableau contient les dates de réception de mes produits et le 2ème contient les dates de consommation des produits consommés pendant le mois . Le truc, c'est que je cherche à savoir la durée de stockage des produits consommés grâce au numéro de lot (Opération de soustraction)! Je suis arrivée à le faire grâce à la fonction Recherchev mais ça demande bcp de duplications..C pour ça, j'ai eu l'idée de l'automatiser grâce à une macro qui doit , pour tous mes produits consommés (identifiés par leur numéro de lot), chercher leur date de réception dans l'autre table, faire la soustraction pour m'afficher par la suite : La durée de stockage.

PS: La taille de mon tableau varie d'un mois à l'autre, de ce fait, la boucle doit parcourir un tableau d'une taille indéterminée, jusqu'à ce qu'il arrive à une cellule vide...

Voici un exemple de mon 1er tableau


Mon deuxième tableau

et je veux que le résultat soit ainsi:



J'espère que quelqu'un aura une idée sur comment procéder ! Je vous remercie d'avance.

5 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Plutôt que des images, Peux tu envoyer un bout de ton fichier (quelques dizaines de lignes) , sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu

    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
    tu fais "Coller".

    Cdlmnt
    0
    1. GenieIngenieur Messages postés 18 Statut Membre
       
      Merci de votre intérêt,
      Ci-joint le lien du fichier( avec des explications dedans)
      https://www.cjoint.com/c/FEprSCv4Xl4
      Vous y trouverez 3 feuilles; la première pour les dates de réception, la deuxième pour les dates de consommation et la 3ème La durée de stockage( Ce que je cherche).

      Ce que je veux, C un tableau dans la 3ème feuille qui me donne pour chaque chaque produit , sa date de consommation avec sa date de réception( Bien évidemment, le lien aura été établi via le numéro de lot) et que me calcul la durée de stockage
      ça a marché avec la fonction recherchev comme suit: =RECHERCHEV($B2;DateReception!$A$2:$B$1364;2;FAUX)
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    1. La strucure de ton fichier n'est pas la même que celle de tes images, si tu veux faire une macro, et avant d'aller plus loin, il faut définir exactement la structure qui sera utilisée.

    2. Les numéros de lots sont ils uniques dans la colonne Lot ?

    Bref, envoies un bout de fichier vraiment complet

    Cdlmnt
    0
    1. GenieIngenieur Messages postés 18 Statut Membre
       
      Oui, le numéro de lot est unique, chaque valeur identifie un et un seul article.C'est à travers ce numéro qu'on cherche la date de réception d'un article consommé à la date x.
      Voici le fichier complet: https://www.cjoint.com/c/FEpvKgcm6o4
      Merci à vous :)
      0
  3. Maurice
     
    Bonjour
    regarde si la macro te va
    Sub TestTransfert()
    Application.ScreenUpdating = False
    NomLig1 = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    NomLig2 = Feuil2.Cells(Rows.Count, 1).End(xlUp).Row
       Feuil3.Range("A5:E" & Rows.Count).ClearContents
    Feuil1.Select
    L2 = 5
       For L = 2 To NomLig1
       Lot = Range("B" & L).Value
          For L1 = 2 To NomLig2
             If Feuil2.Range("A" & L1).Value = Lot Then
                Feuil3.Range("A" & L2).Value = Range("A" & L).Value
                Feuil3.Range("B" & L2).Value = Range("B" & L).Value
                Feuil3.Range("C" & L2).Value = Range("C" & L).Value
                Feuil3.Range("D" & L2).Value = Feuil2.Range("B" & L1).Value
                Feuil3.Range("E" & L2).Value = Range("C" & L).Value2 - Feuil2.Range("B" & L1).Value2
                L2 = L2 + 1
             End If
          Next
       Next
    Feuil3.Select
    End Sub
    


    Amettre dans un Module
    A+
    Maurice
    0
    1. GenieIngenieur Messages postés 18 Statut Membre
       
      Je vais l'essayer et je reviendrai vers vous..Merci !
      0
  4. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    Tu peux t'en sortir sans macro en utilisant la fonction recherchevma (= recherchev multiples arguments) que j'ai développée.

    voir lien ci-joint
    https://www.cjoint.com/c/FEpwaqoXdh8

    RECHERCHEVMA
    Cette fonction renvoie la valeur correspondante à une colonne d’une table en fonction des valeurs cherchées.

    La syntaxe de cette fonction est :
    RECHERCHEVMA (table ; no_index_col; valeur_cherchée _1 ; valeur_cherchée _2 ; … ; valeur_cherchée _n)

    • table: Plage de cellules qui contient les données. Vous pouvez utiliser une référence à une plage (par exemple, A2:D8) ou un nom de plage. C’est sur les valeurs des colonnes 1 à n de table respectives à chaque argument de valeur_cherchée, que portent les différentes valeurs cherchées. Ces valeurs peuvent être du texte, des nombres ou des valeurs logiques.

    • no_index_col: Numéro de la colonne de l’argument table dont la valeur correspondante doit être renvoyée. Si l’argument no_index_col est égal à 1, la fonction renvoie la valeur de la première colonne de l’argument table ; si l’argument no_index_col est égal à 2, la valeur de la deuxième colonne de l’argument table est renvoyée, et ainsi de suite.

    • valeur_cherchée_i: La valeur à chercher dans la colonne i de la table selon la position i de l’argument valeur_cherchée. Le nombre d’arguments pour valeur_cherchée peut varier de 1 à n. Si une des valeurs cherchées n’est pas trouvée dans l’argument table, la fonction RECHERCHEVMA renvoie la valeur d’erreur #N/A.

    0
    1. GenieIngenieur Messages postés 18 Statut Membre
       
      Merci infiniment à vous, je vous en suis très reconnaissante :)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Maurice
     
    Bonjour
    voila un modèle avec une pro Barre
    http://www.cjoint.com/c/FEql4HQmW5q
    bon a toi de voir si ca te va
    A+
    Maurice
    0