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 :

Macro fonctionnant partiellement, votre aide est la bienvenue !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut Macro fonctionnant partiellement, votre aide est la bienvenue !
    Bonjour, je débute dans le langage VBA , j'utilise Excel 97 et essaye de créer une macro qui permet de rechercher des données dans un tableau et les inscrit dans un formulaire UserForm.
    Pour cela j'ai essayé d'utiliser la fonction Hlookup, le programme fonctionne partiellement. Vous pourrez ouvrir le fichier joint pour mieux comprendre le problème. (lorsque l'on saisi un poids pour un colis quelconque, les prix sont bien restitués lorsque le poids du colis est compris entre 11 et 99 kg mais lorsque son poids est inférieur, les prix restitués ne sont pas les bons, ils sont pris dans une mauvaise colonne ! je ne comprends pas pourquoi !
    Voici le code utilisé :
    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
     
    Private Sub CommandButton2_Click()
    If UserForm1.TextBox12.Value = "" Then
     MsgBox "Veuillez saisir le poids du colis !", vbOKOnly, "Erreur"
    Else
    TextBox4 = ""
    TextBox6 = ""
    TextBox8 = ""
    TextBox10 = ""
    TextBox14 = ""
    'If UserForm1.TextBox12.Value = Feuil2.Cells(Feuil2.Range("c25:cy32").Find(UserForm1.TextBox12).Row, 1) Then
    TextBox4 = Application.WorksheetFunction.HLookup(UserForm1.TextBox12, Worksheets(2).Range("c25:cy32"), 3)
    TextBox6 = Application.WorksheetFunction.HLookup(UserForm1.TextBox12, Worksheets(2).Range("c25:cy32"), 7)
    TextBox8 = Application.WorksheetFunction.HLookup(UserForm1.TextBox12, Worksheets(2).Range("c25:cy32"), 6)
    TextBox10 = Application.WorksheetFunction.HLookup(UserForm1.TextBox12, Worksheets(2).Range("c25:cy32"), 4)
    TextBox14 = Application.WorksheetFunction.HLookup(UserForm1.TextBox12, Worksheets(2).Range("c25:cy32"), 8)
    End If
    End Sub


    tous vos conseils seront les bienvenus ! merci d'avance à tous ceux qui me répondront.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Quelques remarques
    Utilise les balise code c'est illisible ainsi
    Pour savoir comment regarde ici
    Edit ton message pour les ajouter (et enlève la couleur)

    Ensuite dans le fichier que tu nous donne il n'y a pas le userform on va avoir du mal a t'aider

    Personnellement je chercherais plutot a parcourir la ligne avec les différente masse et une fois que tu as la masse recherché tu récupère les valeur de la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim DerniereColonne as integer, i as integer
    DerniereColonne = Range("IV1").End(xlToLeft).Column
    for i = 3 to DerniereColonne 
        if cells(25,i)=UserForm1.TextBox12.Value then
            TextBox4=cells(27,i)  'pour avoir le prix de sernam express par exemple
            '...
        end if
    next i
    (c'est quand même plus lisible avec les balise code non?)

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    et initialiser les textbox a "" est inutile puisque tu les initialise une nouvelle fois juste en dessous

  4. #4
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut
    Merci à vous 2 qui m'avez répondu mais étant donné que je suis débutante, je ne comprend malheureusement pas tout ce que vous me dites ! lol j'ai remis le bon fichier avec le userform , avec toutes mes excuses

    j'ai essayé d'utilisé les balises codes comme tu m'as dit , mais je ne crois pas que c'est fonctionné ! quant aux masses dont tu me parles pourrais tu m'en expliqué le principe ? Je te remercie

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Topn but c'est de retrouver dans ton tableau la colmonne qui contient les prix pour une certaine masse de coli

    Je parcoures ton tableau et dès que la cellule en ligne 25 colonne est la meme que le contenue de la textbox qui visiblement contient la masse du colie tu n'a plus qu'a remplir tes textbox avec les différente valeur de la colonne

    corespond a la cellule de la ligne l colonne c

    Le code avec des commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    dim DerniereColonne as integer, i as integer
     'déclaration des variable, essentiel quand ton début 
    'le mieu étant d'écrire OPTION EXPLICITE dans la première ligne du module
     
    DerniereColonne = Range("IV1").End(xlToLeft).Column 'je récupère le numéro de la dernière colonne remplie a la ligne 25
     
    for i = 3 to DerniereColonne  'on va faire varier i a chaque boucle de 3 a dernierecolonne
        if cells(25,i)=UserForm1.TextBox12.Value then 'si la cellule de la ligne 25 colonne i est égale au contenu de la textbox12
            TextBox4=cells(27,i)  'on ecrit dans la textbox4 le contenue de la cellule ligne 27 colonne i
            '...  ici c'est a toi de remplir les autres textbox
        end if 'fin si
    next i 'i suivant
    Je peux difficilement expliquer d'avantage, mais si tu n'as toujours pas compris je vais essayer

  6. #6
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut
    Merci pour ton code et ta patience !
    je commence a mieux comprendre ton code, seuls quelques éléments me paraissent encore flous :
    ce que tu as mis entre parenthèses après Range, à quoi cela correspond ?
    Qu'est qu'une boucle de 3
    et dans ta première ligne du code, il faut que je remplace i par la lettre correspondant à ma dernière colonne , c'est ça ?

    Sinon selon toi la fonction hlookup que j'avais fait ne peut pas fonctionné ?

    Je vais devoir y aller , je te remercie pour tes précieux conseils et j'espère te lire prochainement.

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

Discussions similaires

  1. Comment est votre "Aide" ?
    Par afrodje dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/03/2007, 14h25

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