Recherche valeur VBA Excel

Fermé
jiandal -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
coucou ,
je cherche un code VBA pour recherche un code produit X dans une colonne (code produit) et de afficher la valeur de stock correspondante dans la colonne à côté (colonne stock théorique)


complication : le code produit x se répète, j'aimerai chercher en boucle jusqu'à retrouver la dernière valeur qui ne se répète pas : cela correspond à la valeur la plus récente

j espère que quelqu'un de super fort en VBA Excel entendra mon appel à l'aide :) !!! ça m'empêche d'avancer depuis un moment ce problème
A voir également:

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Es tu obligé d'utiliser VBA pour résoudre ce Pb ?

En effet le pb peut ^tre réglé avec une formule.....
0
biboupifa Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour michel,

oui en effet je lui fait avec vba mais c'est possible plus simplement avec les fonctions
0
jiandal
 
j'ai déjà essayer 2 fonctions :
=INDEX($I$1:I57;MAX(SI((SUPPRESPACE($H$1:H157)=SUPPRESPACE(E2))*(LIGNE($I$1:I57)<LIGNE());LIGNE($I$1:I57)))-1)


=SI(NB.SI(D12:D174;D11)=0;"inconnu";INDIRECT("X"&MAX(SI(D12:D174=D11;LIGNE(X12:X174)))))

aucune ne marche !! j'ai fini par me dire que je devrais essayer de créer une Macro VBA qui va exécuter cette tâche plus facilement mais ça coince encore au niveau du code VBA
0
biboupifa Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,

dans l'idée ça donne ca:

Sub bidule()
Dim i As Integer
i = 1 'si c'est la premiere ligne

If Cells(i, 1).Value = "binz" Then
Cells(i, 2).Value = "valeur stock" 'je ne sais pas ou est ta valeur
i = i + 1
End If

End Sub
0
biboupifa Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
ta complication je ne la comprends pas
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
à biboupifa

c'est la dernière valeur du produit que veut le demandeur

Pour jiandal

tu es prié de ne pas créer des doublons (cf forum bureautique) donc tu le supprimes

Il n'y a pas besoin d'être "super-fort" pour écrire ce qui suit ! :-(

en VBA:
Sub chercher_stock()
Dim Produit As String, Lig As Integer

Produit = Range("D3")
On Error GoTo vide
Lig = Columns("A").Find(Produit, , , , , xlPrevious).Row
MsgBox "dernier stock de " & Produit & ": " & Cells(Lig, "B")
Exit Sub
vide:
MsgBox "produit inconnu", vbCritical
End Sub


Maquette à adapter à ton contexte
https://www.cjoint.com/?3GsoLL699UA

je te complète avec la formule (pas si simple que veut le dire notre ami)
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Et voilà la formule

=INDIRECT("B"&MAX(SI(A2:A200=D3;LIGNE(A2:A200))))

IMPORTANT:
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}
0
jiandal
 
merci pour ta réponse michel , pourrais tu me dire à quoi correspond le "B" dans la formule .
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
B c'est la colonne des stocks dans ma maquette et "A" celle des produits

A3:A200 --> pour 200 , tu peux mettre ce que tu veux (nombre maxi de lignes prévisible

La fonction INDIRECT donne la valeur du stock sur la ligne du produit. dans ma maquette

MAX(SI(A2:A200=D3;LIGNE(A2:A200)) donne la ligne 44
donc la valeur du stock est dans B44 et indirect(B44) = valeur stock

A propos, je te signale que ma formule que tu reprends (il est d'usage de citer l'auteur, merci)
=SI(NB.SI(D12:D174;D11)=0;"inconnu";INDIRECT("X"&MAX(SI(D12:D174=D11;LIGNE(X12:X174)))))
fonctionne et est une matricielle à valider par « ctrl+maj+entrée » comme indiquée + haut
Et visiblement comme le 16 et le 17, tu n'as pas fait l'effort de lire comment valider une formule Matricielle
Ce n'est pas sérieux de ta part

Bonne soirée
0