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 fonction VLOOKUP et DATEADD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Problème fonction VLOOKUP et DATEADD
    Bonjour,

    Cela fait quelques heures que je planche sur un problème en VBA (je suis novice en la matière).
    Je souhaite utiliser la fonction VLOOKUP afin de récupérer un chiffre qui est lié à un type de produit dans un tableau, et d'ajouter ce chiffre (qui correspond a un nombre de mois) comme paramètre de la fonction DATEADD afin de créer une date.
    Ce n'est peut être pas très clair mais je peux essayer de vous expliquer le problème de manière simple : j'ai des produits qui ont tous un temps d'attente différent avant de pouvoir être vendu. j'aimerai donc savoir a partir de qu'elle date tel produit peu être vendu. Il faut pour cela utiliser la fonction DateAdd et simplement ajouter le nombre de mois d'attente à la date de départ. Mais comme ce temps diffère en fonction de chaque produit je veux que ca se fasse de façon automatique et donc que ca récupère ce "temps" par la fonction VLOOKUP. J'espère que j'ai été un peu plus clair ^^.
    voici donc mon code, mais il ne marche pas et je ne comprends pas pourquoi ...

    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
    Private Sub CommandButton_Enregistrer_Click()
    Dim MC As Range
    Dim NbrM As Integer
    
    ' positionner MC sur le premier nom
    Set MC = Feuil4.Range("DateEnsemensement")
    
    ' recherche d'une ligne vide vers le bas
    Do While Not IsEmpty(MC.Value)
        Set MC = MC.Offset(1, 0) ' passer à la cellule du dessous
    Loop
    
    ' insertion des données de l'utilisateur
    MC.Value = Date   ' Date d'ensemensement
    MC.Offset(0, 4).Value = ComboBox_TypeProduit.Value 'Produit
    NbrM = Application.WorksheetFunction.VLookup(Sheets("Stocks").Cells(MC.Offset(0, 4)), Sheets("Produits").Range(A, C), 3, False)
    MC.Offset(0, 1).Value = DateAdd("m", NbrM, Date)
    MC.Offset(0, 2).Value = "=Today()" 'Date du jour
    MC.Offset(0, 3).Value = ComboBox_NbPlants.Value 'Nombre
    Mon erreur ce trouve sur la ligne en rouge
    ci joint mon fichier Projet VBA 2.xlsm

    Si vous avez une solution..

    Merci énormément d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Comme ceci peut-être ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...,Sheets("Produits").Range(A:C),...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MC.Offset(0, 2).Formula= "=Today()" 'Date du jour

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut @Parmi
    Bonjour,

    Non malheureusement ca ne fonctionne pas..
    pour le Range(A:C) ça me met qu'il y a une erreur de syntaxe et pour la date du jour ca fonctionne bien comme c'est.
    Merci de ton aide en tout cas

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    avec guillemets ?
    ...,Sheets("Produits").Range("A:C"),...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut
    Non plus ...
    J'ai fait une boucle au lieu d'utiliser la fonction vlookup pour contourner le problème. Mais il est encore la apparemment... ma boucle est bonne mais ca me met qu'il s'agit d'un problème d'identificateur sur la variable "NbrMonth" ... voici mon code (en rouge la ou ca pose problème) :

    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
    21
    22
    23
    24
    25
    26
    27
    Private Sub CommandButton_Enregistrer_Click()
    Dim MC As Range, MT As Range
    Dim NbrMonth As Double
    
    ' positionner MC sur le premier nom
    Set MC = Feuil4.Range("DateEnsemensement")
    
    ' recherche d'une ligne vide vers le bas
    Do While Not IsEmpty(MC.Value)
        Set MC = MC.Offset(1, 0) ' passer à la cellule du dessous
    Loop
    
    ' insertion des données de l'utilisateur
    MC.Value = Date   ' Date d'ensemensement
    MC.Offset(0, 2).Value = "=Today()" 'Date du jour
    MC.Offset(0, 3).Value = ComboBox_NbPlants.Value 'Nombre
    MC.Offset(0, 4).Value = ComboBox_TypeProduit.Value 'Produit
    
    Set MT = Feuil2.Range("NomProduit")
    Do While Not MC.Offset(0, 4).Value = MT.Value
        Set MT = MT.Offset(1, 0) 
    Loop
    
    NbrMonth.Value = MT.Offset(0, 3).Value
    MC.Offset(0, 1).Value = DateAdd("m", NbrMonth, Date)
    End
    End Sub
    J'ai essayé en ajoutant des .Value, des guillemets, des parenthèses, ... ca n'y change rien
    Si quelqu'un à la solution, merci d'avance

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Deux choses:
    Quand tu mets du code, balise-le. Sélectionne ton code et clique le bouton # dans la barre d'outils du message.
    Qu'est-ce qui ne fonctionne pas ? message d'erreur ? si oui lequel et sur quelle ligne ?

    NbrMonth étant un Double, pas besoin de .Value
    Mais est-ce bien un Double dont tu as besoin ? pourquoi pas un Integer ou un Long ?

Discussions similaires

  1. [XL-2003] Problème Fonction VlookUp
    Par HankMoody dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/08/2012, 17h01
  2. [XL-2007] Problème fonction VLookup
    Par manu900 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/02/2012, 09h20
  3. [XL-2003] Problème avec la fonction Vlookup
    Par CriCri98 dans le forum Excel
    Réponses: 9
    Dernier message: 19/08/2009, 17h41
  4. Problème avec la fonction "VLookup"
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2008, 09h57
  5. Problème avec la fonction VLookup
    Par pinocchio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2008, 11h59

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