Macro Recherchev

Fermé
GenieIngenieur Messages postés 16 Date d'inscription samedi 15 novembre 2014 Statut Membre Dernière intervention 17 mai 2016 - Modifié par GenieIngenieur le 15/05/2016 à 17:13
 Maurice - 16 mai 2016 à 13:59
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.
A voir également:

5 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
15 mai 2016 à 18:37
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
GenieIngenieur Messages postés 16 Date d'inscription samedi 15 novembre 2014 Statut Membre Dernière intervention 17 mai 2016
15 mai 2016 à 19:45
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
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 15/05/2016 à 21:37
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
GenieIngenieur Messages postés 16 Date d'inscription samedi 15 novembre 2014 Statut Membre Dernière intervention 17 mai 2016
Modifié par GenieIngenieur le 15/05/2016 à 23:42
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
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
GenieIngenieur Messages postés 16 Date d'inscription samedi 15 novembre 2014 Statut Membre Dernière intervention 17 mai 2016
15 mai 2016 à 23:38
Je vais l'essayer et je reviendrai vers vous..Merci !
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
Modifié par thev le 16/05/2016 à 00:11
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
GenieIngenieur Messages postés 16 Date d'inscription samedi 15 novembre 2014 Statut Membre Dernière intervention 17 mai 2016
16 mai 2016 à 13:21
Merci infiniment à vous, je vous en suis très reconnaissante :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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