Macro Recherchev
GenieIngenieur
Messages postés
18
Statut
Membre
-
Maurice -
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.
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:
- Macro Recherchev
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Recherchev contient ✓ - Forum Excel
- Macro maker - Télécharger - Divers Utilitaires
5 réponses
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
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
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
2. Les numéros de lots sont ils uniques dans la colonne Lot ?
Bref, envoies un bout de fichier vraiment complet
Cdlmnt
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 :)
Voici le fichier complet: https://www.cjoint.com/c/FEpvKgcm6o4
Merci à vous :)
Bonjour
regarde si la macro te va
Amettre dans un Module
A+
Maurice
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)