IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec fonction vlookup [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut Problème avec fonction vlookup
    Bonjour,

    Je suis débutante dans le vba et je suis bloqué depuis une semaine sur une fonction vlookup.

    En faite j'ai un tableau facture dans une feuille "Facturation1" et j'ai un autre tableau produits finis dans une feuille "Produits fini".
    Dans la feuille "Facturation1" j'ai un produit et une quantité commandée et dans la feuille "Produits fini", j'ai également un produit avec ma quantité de stock.
    J'aimerai faire une macro qui compare la quantité du produit commandée par rapport à la quantité du produit en stock...

    J'ai commencé comme ça mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim quantite_commande As Currency
     
    quantite_commande = Worksheets("Facturation1").Range("E16").Value
    quantite_stock = Worksheets("Produits fini").Range("D8:D11").Value
    produit = Worksheets("Facturation1").Range("D16").Value
    produit_fini = Worksheets("Produits fini").Cells("B8:G10").Value
     
     
    If quantite_commande >= Application.VLookup("produit", ["produit_fini"], 3, 0) Then
     
    MsgBox ("Votre quantité en stock n'est pas suffisante. Voulez-vous connaitre l'état de vos stocks?")
    Je vous remercie par avance pour votre aide!

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Iseulysse, bonjour le forum,

    Pourrais tu nous donner la même chose en formule avec, si la formule contient des plage données, la référence de ces plages ou un petit fichier exemple (Aïe ! Pas sur la tête les modos...) ? Parce que tel que tu le proposes il y a des incohérences et je ne peux pas t'expliquer avant d'avoir compris moi-même...

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour à tous, et un coucou à Thautheme,

    Tel que le code est fourni, il y a plusieurs erreurs .... voir commentaires insérés dans votre code d'origine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim quantite_commande As Currency 'surprenant, mettre plutot un type INTEGER ou SINGLE
    ' Je vous suggère de déclarer toutes les autres variables.... autrement, c'est le type variant
     
    quantite_commande = Worksheets("Facturation1").Range("E16").Value
    quantite_stock = Worksheets("Produits fini").Range("D8:D11").Value
    produit = Worksheets("Facturation1").Range("D16").Value
     
    ' Vous voulez faire quoi avec votre item 'produit_fini', je pense que c'est plutot un Range que vous voulez définir, nom?
    produit_fini = Worksheets("Produits fini").Cells("B8:G10").Value
     
     
    If quantite_commande >= Application.VLookup("produit", ["produit_fini"], 3, 0) Then
     
    MsgBox ("Votre quantité en stock n'est pas suffisante. Voulez-vous connaitre l'état de vos stocks?")

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut
    Bonjour,

    Merci de votre aide!
    Désolée de ne pas avoir été très claire, je vous envoie un petit fichier exemple pour vous montrer plus facilement ce que je souhaiterai faire

    Classeur2.xlsx

    Dans la feuille Facturation1, en faite je voudrais faire une comparaison des quantités commandés pour chaque article par rapport aux quantités de stock des produits finis dans la feuille produit fini.

    Donc en faite faire une comparaison entre la colonne E de la feuille de facturation en prenant en compte le produit que ca concerne et les comparer avec les cellules D8 à D10 de la feuille produit fini toujours en prenant compte quel produit ca concerne...

    J'espère que mes explications sont un peu plus claire ^^

    Je vous remercie!

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    J'y vais dans le désordre en espèrant être clair, avec version modifiée jointe

    1. Vous n'avez pas à priori besoin de passer par du VBA pour détecter une commande > Qty en stock, sauf si vous voulez cumuler les commandes par article ou mettre à jour le stock....
    2. Je vous ai fait pas mal de suggestions dans le fichier
    Classeur2.xlsx

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut
    Bonjour,

    Je vous remercie,

    En effet, je souhaite cumulé les articles pour une commande et mettre à jour mon stock. Pensez-vous que je puisse appliquer les mêmes formules que vous en les adaptant au langage VBA ?

    J'ai réussi à faire une macro par rapport à tout ce que vous m'avez envoyé qui marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Dim tab1
    tab1 = Worksheets("Produits fini").Range("B8:G10")
     
    Dim numligne As Integer
    numligne = 16
     
    article = Range("C16")
    quantite_commande = Range("E16")
     
    While Cells(numligne, 3) <> 0
        If Cells(numligne, 5) > Application.WorksheetFunction.VLookup(Cells(numligne, 3), tab1, 3, 0) Then
        MsgBox ("La quantité en stock n'est pas suffisante")
        Else
        MsgBox ("La quantite est suffisante")
        End If
        numligne = numligne + 1
     
        Wend
    End Sub
    Je n'ai plus qu'un dernier problème que je ne vois pas du tout comment résoudre, je me demandais si vous aviez une petite astuce..

    La formule marche, elle recherche bien mes trois produits sauf que le Msgbox m'affiche trois fois la réponse... Est ce que vous voyez ce que je pourrai faire pour que ça m'affiche que dans une seule Msgbox la réponse... Par exemple, si j'ai 3 produits et qu'il y en a un qui n'est plus en stock ca me dise juste le nom du produit qu'il me manque...?

    Merci infiniment!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 20h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo