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 :

Comment créer un moteur de recherche avec un Userform


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Quality & training manager
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Quality & training manager

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment créer un moteur de recherche avec un Userform
    Bonjour à tous,

    J'essaie de créer un Userform avec un moteur de recherche. Je n'ai pas de formation en VBA mais j'arrive en général à copier des formules trouvées sur des forums ou des tutos pour les adapter à mes fichiers. Cette fois-ci, je n'y arrive vraiment pas, je m'en remets donc à vous. N'hésitez pas à me rediriger vers une discussion résolue qui traite du même sujet ou à me dire si je ne suis pas au bon endroit.

    Je vais essayer de vous expliquer précisément ma problématique.

    Je suis chargée de réorganiser le stockage des échantillons dans une entreprise.

    Le stockage est organisé de la manière suivante: 2 niveaux, 36 armoires par niveau (3 armoires par mois) et 5 étagères par armoire. Cela nous donne un storage_number. Par exemple, D.02.03.B correspond à niveau downstairs, troisième armoire de février, étagère B.

    Dans mon fichier Excel, ce storage_number se trouve dans la colonne A de mes feuilles "downstairs" et "upstairs".

    Lorsque les échantillons arrivent, on les range dans les armoires, et on note leur reference_number dans les colonnes B à P du fichier Excel (on met maximum 15 échantillons par étagère). Cela nous donne: une ligne du fichier = une étagère avec quinze échantillons = 1 storage_number + 15 reference_number

    Venons-en au Userform qui servira de moteur de recherche. Je veux pouvoir retrouver l'emplacement d'un échantillon dans le stockage en rentrant son numéro de référence. Autrement dit, en rentrant un reference_number, je veux obtenir storage_number.
    Le Userform est constitué d'une TextBox1 dans laquelle on rentre le reference_number, d'un CommandButton1 qui lance la recherche, d'une TextBox2 dans laquelle s'affiche le storage_number et d'un CommandButton2 pour réinitialiser le formulaire. Mais comment coder cela ?

    Je vous remercie d'avance pour votre aide,

    Bien cordialement,

    Storage_pour_forum.xlsm

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par helloitsme Voir le message
    Lorsque les échantillons arrivent, on les range dans les armoires, et on note leur reference_number dans les colonnes B à P du fichier Excel (on met maximum 15 échantillons par étagère). Cela nous donne: une ligne du fichier = une étagère avec quinze échantillons = 1 storage_number + 15 reference_number
    Il aurait été plus fonctionnel de créer une colonne "N° échantillon" avec des valeurs de 1 à 15.
    Comme ça la référence des échantillons se retrouvait dans une seule colonne et ton problème se résumait à une fonction Excel simple de type RECHERCHEV() ou une combinaison de INDEX() et EQUIV().

    Perso, je me contenterais de mettre un Filtre sur les données et ça suffirait largement.

    Le Userform est constitué d'une TextBox1 dans laquelle on rentre le reference_number, d'un CommandButton1 qui lance la recherche, d'une TextBox2 dans laquelle s'affiche le storage_number et d'un CommandButton2 pour réinitialiser le formulaire. Mais comment coder cela ?
    Tu peux faire ça avec une méthode Find de Range.
    https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)
    Mais, comme je l'ai dit, la seule raison qui peut inciter à utiliser du VBA, c'est une mauvaise structuration des données.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

    Informations professionnelles :
    Activité : salarié

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

    Une proposition VBA :

    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
    28
    29
    30
    31
    Private Sub CommandButton1_Click()
    Dim OD As Worksheet
    Dim OU As Worksheet
    Dim TVD As Variant
    Dim TVU As Variant
     
    Set OD = Worksheets("Downstairs")
    Set OU = Worksheets("Upstairs")
    TVD = OD.Range("A1").CurrentRegion
    TVU = OU.Range("A1").CurrentRegion
    For I = 2 To UBound(TVD, 1)
        For J = 2 To UBound(TVD, 2)
            If CStr(TVD(I, J)) = Me.TextBox1.Value Then
                Me.TextBox2.Value = TVD(I, 1)
                OD.Activate
                OD.Cells(I, 1).Select
                Exit Sub
            End If
        Next J
    Next I
    For I = 2 To UBound(TVU, 1)
        For J = 2 To UBound(TVU, 2)
            If CStr(TVU(I, J)) = Me.TextBox1.Value Then
                Me.TextBox2.Value = TVU(I, 1)
                OU.Activate
                OU.Cells(I, 1).Select
                Exit Sub
            End If
        Next J
    Next I
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  4. #4
    Candidat au Club
    Femme Profil pro
    Quality & training manager
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Quality & training manager

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup à tous les deux pour votre réactivité et d'avoir pris la peine de me répondre !

    Super Thauthème, c'est exactement ce que je voulais ! Je n'aurais pas pu trouver ça toute seule ^^

    Menhir, ce que tu ne pouvais pas savoir parce que je ne l'ai pas dit et parce que je n'ai pas mis le fichier complet, c'est que j'utilise des Userforms car j'ai plusieurs utilisateurs:
    - Celui qui rentre les numéros de référence
    - Ceux qui effectuent des recherches à l'aide du moteur de recherche
    Donc à l'ouverture du fichier s'ouvre uniquement un Userform de connexion qui dirige, en fonction du mot de passe, soit vers le fichier Excel pour ajouter les numéros de référence, soit vers le Userform moteur de recherche.

    Encore merci à vous !!!

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

Discussions similaires

  1. [XL-2007] Créer un moteur de recherche avec lien hypertexte cliquable
    Par Aurélien13140 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/05/2018, 23h36
  2. [MySQL] Créer un moteur de recherche avec des conditions supplémentaires
    Par ghislaingaudin dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/05/2012, 11h46
  3. Réponses: 0
    Dernier message: 17/10/2005, 08h05
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

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