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 :

Aide fonction recherche dans VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut Aide fonction recherche dans VBA
    Bonjour,

    j'ai déjà utiliser la fonction recherche pour ce type de sujet mais je ne pense pas que les demandes été similaire pour mon cas (ou alors je n'ai pas compris du tout comment procéder).

    Donc j'aimerais créer un bon de commande automatisé a remplir en passant par vba.

    Le code que j'ai besoin est celui permettant, lors de la saisie d'un nom client par exemple, d'avoir une sorte de liste prenant source dans une feuille du classeur excel.

    Concrètement quand je lance le programme vba, quand il est demandé d'entrer le nomclient, une liste ou des propositions venant de la base de donnée (un tableau dans une feuille excel) apparait pour guider le choix.
    Avec si possible un message d'erreur si nom incorrecte ou non présent dans la source.

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je te conseille l'userform avec une simple liste dans laquelle l'utilisateur peut sélectionner le bon nom sans erreur
    ou bien une liste et un textbox si tu tiens à la saisie manuelle :
    Dans la liste la plage des noms existant, dans le textbox le nom à saisir.
    Le nom saisie, s'il n'existe pas dans la liste, un message et renvoi dans le textbox.
    ou bien, une simple liste dans la feuille avec sélection dans la liste
    ou bien, cette même liste dans un userform si tu souhaites réaliser cette sélection depuis une autre feuille...
    ou bien, un inputbox mais là, ça devient tout de suite moins convivial pour l'utilisateur...
    Tu choises
    A+

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut
    Je te remercie pour toutes tes réponses, mais en fait le passage par vba est une obligation de mon professeur, donc ce qui m'amène à ne prendre que les userform ou les textbox ?
    (bien que je ne sache pas ce que cela veut dire, par contre je connais inputbox)

    Je vais essayer de moi même en tâtant pour les userform et les textbox vu que je sais maintenant quel fonction utiliser , mais si un modèle où une explication pouvait me faciliter la tâche ce serait très sympa

    @+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pas difficile. Tu vas dans le menu Outils d'Excel -> Macro -> Visual basic editor -> Une fois là, tu sélectionnes ton projet (nom du classeur) tu vas dans le menu "Insérer" -> Userform.
    Là, tu as une boîte à outils qui s'affiche, tu sélectionnes Textbox et tu places la textbox là où tu veux qu'elle soit.
    Deux clics sur la textbox te permet de rentrer le code que tu souhaites.
    Là, tu as deux fenêtres en haut de la feuille de code. A gauche les contrôles que tu as avec l'userform (ici le textbox) et à droite, les événements que peuvent intercepter ces contrôles.
    Tu ajoutes un bouton. Pour le moment, il est indispensable si tu veux contrôler le mot entier qui a été saisi dans le textbox. Il te permettra de quitter le textbox après saisie du nom. Pour le moment toujours, il ne servira qu'à ça.
    Plus tard, on verra ce qu'on en fait
    Pour sélectionner un événement relatif à un contrôle, tu vas dans la fenêtre de gauche, tu sélectionnes le contrôle. Ceci fait, tu vas dans la fenêtre de droite et tu sélectionnes l'événement.
    Pour le textbox, tu sélectionnes l'événement Exit.
    C'est dans Textbox_Exit que tu mettras ton code pour vérifier l'existence du nom que tu recherches.
    Avec ça et tes cours, tu devrais te débrouiller
    Bon courage... mais nous avons tous commencé par là

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut
    Alors après plusieurs essais (j'ai vraiment pas compris le fonctionnement de l'userform), j'ai fait ceci comme code :

    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
     
    Sub boncommande()
    Dim nom As String
    Dim numclient As String
    i = 1
    j = 1
    numclient = InputBox("Quel est le N° du client ?")
    Do While numclient <> Worksheets("Clients").Cells(i + 2, 1)
        If numclient = Worksheets("Clients").Cells(i + 2, 1) Then
            i = 1
            Worksheets("Bon de commande").Cells(i + 3, j + 5).Value = numclient
            Else
            i = i + 1
        End If
    Loop
    End Sub
    Les cells(i+2,j) corresponde à la première ligne du N° client de la base de données.
    Les cells (i+3,j+5) corresponde à la cellule du bon de commande où doit apparaitre le N°.


    Mais cela ne marche pas, donc je suis vraiment bloqué (et toute ma classe aussi faut dire )

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as une solution plus simple avec find.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub boncommande()
    Dim c as range
    Dim numclient As String
        numclient = InputBox("Quel est le N° du client ?")
        With Worksheets("clients").Range("a1:a" & Range("A65536").end(xlup))
            Set c = .Find(numclient , lookin:=xlValues, Lookat:=xlwhole)
            If Not c Is Nothing Then
                 'pour la ligne suivante, je me contente d'adapter ton code
                Worksheets("Bon de commande").Cells(Cell.row + 3, 6).Value = numclient
            End If
        End With
    End Sub
    Plus simple et plus rapide qu'une boucle qui parcourt toutes les lignes

Discussions similaires

  1. [E-03] Aide sur la Fonction .Find dans VBA
    Par Gunsx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2009, 22h36
  2. fonction shell dans VBA
    Par dada31 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/01/2008, 09h41
  3. fonction recherche dans un JTextPane
    Par projetGTR dans le forum Langage
    Réponses: 1
    Dernier message: 23/11/2007, 14h19
  4. fonction recherche dans tableau javascript
    Par calitom dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2006, 15h51
  5. Réponses: 2
    Dernier message: 16/11/2006, 15h00

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