VBA sélection d'une piece

Fermé
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 - 1 août 2017 à 10:49
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 - 1 août 2017 à 16:52
Bonjour,

je vous envoie un fichier ou j'ai enlever les infos confidentielles.

Cela fait deux mois que je cherche a créer un userform qui me permettrait de sélectionner des pièces dans n'importe quel onglet du classeur.

chaque onglet représente une famille de pièce et dans chaque onglet on retrouve les références des pièces avec des caractéristiques.

J'ai donc créer une liste déroulante relié a la feuille TabCategorie comme vous pouvez le voir sur le fichier

donc au final l'initialisation de la userform fonctionne très bien els combobox se remplis correctement.

maintenant pour effectuer la recherche (bouton rechercher) j'ai essaye plusieurs méthode donc la classique avec tableau et boucle mais le code est trop long donc j'ai essaye d'utilisé une variable flag qui renvoyer la valeur vrai ou faux en fonction du choix dans les combobox 1 ou 2.

J'ai aussi réussi a utiliser la fonction autofilter qui marche très bien. la deux difficulté sont apparue :
le fichier est passé de 500ko a 13000ko ???
Création d'une fonction remplir box via l'initialisation de la userform pour que sa reinitialise la userform lorsqu'il y a changement d'une combo.

SVP , Quelle solution serait la plus simple selon vous pour réaliser cette sélection de base de données ???


3 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
1 août 2017 à 11:25
Bonjour

Où est le fichier ?
Le poster sur mon partage.fr, faire créer un lien, le copier et revenir le coller ici

Cdlmnt
Via
0
J'espère que ça ira comme ça :
https://mon-partage.fr/f/XtL64JI3/

Merci pour les conseils et j'espère que votre réponse pourra maider. J'ai déjà bien avance dans le travail il faut juste que je le decide... Et que ça marche parfaitement
0
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017
1 août 2017 à 12:28
A LA BASE MON FICHIER CONTIEN beaucoup plus d'onglet mais j'ai réduit le fichier
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
1 août 2017 à 13:49
Re,

Apparement tes macros et ton userform fonctionne bien
Je ne comprends pas bien ce que tu voudrais de plus
Reposes ta question sur le forum en donnant plus de précisions, c'est très technique et pas forcément compréhensible pour un néophyte !

Cdlmnt
Via

0
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017
1 août 2017 à 14:01
question 1 : pourquoi quand j'utilise la fonction autofilter mon fichier passe de 400 a 13000 ko

question 2 : concernant le fichier envoyé je voudrais afficher le résultat sur la feuil1 en ligne !! en dessous des noms des colonnes qui s'affiche en rouge

question 3 : la ou le programme marche pas ===== explication : lorsqu'on fait un choix dans la userform, il y a souvent plusieurs réponse correspondant à ces choix et la ca marche pas. je voudrais afficher les lignes correspondantes au choix effectué dans la userform.
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017
1 août 2017 à 16:20
Je n'ai pas de réponse à la question 1

Pour la 2/3 dans la macro tu fais varier la ligne de retour, la colonne étant toujours 1
While ResultDesignation(j) <> "" 'And ResultReference(j) <> ""
.Cells(i + 5, 1) = ResultDesignation(j)
donc les résultats sont présentés en colonne
C'est l'inverse qu'il faut faire pour présenter en ligne et sur plusieurs lignessoit quelque chose comme :
.Cells(j + 5, 1 + i) = ResultDesignation(j)

A tester

Cdlmnt
Via
0
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
1 août 2017 à 16:36
With Worksheets(NomFeuille)
While .Cells(l, c) <> ""
flag = True 'D'abord on suppose que tous les CAT(i) sont à VRAI

For i = 1 To 20
CAT(i) = (.Cells(l, c + i).Text = CAT_NOM(i)) Or CAT_NOM(i) = ""
If Not CAT(i) Then flag = False 'si CAT(i) est faux : flag devient false
Next i

If flag = False Then 'si flag est vrai, tous les CAT(i) sont à VRAI
ResultReference(j) = .Cells(l, c)
ResultFournisseur(j) = .Cells(l, c - 1)
ResultDesignation(j) = .Cells(l, c)

j = j + 1

La juste au dessus il faudrait qu'il affiche que les résultats qui correspond au flag = false quand on regarde sa devrait remplir le tableau avec une seule reference si on choisie un moteur de type LSES90 par exemple.... quand le flag passe a faux il mémorise pas le contenu de la combo box ?

End If

l = l + 1
Wend
End With
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017
1 août 2017 à 16:49
N'ayant pas été à l'origine de ta macro de recherche je ne comprends pas bien comment elle fonctionne ni ton histoire de flag

Pour la modifier fais une redemande sur le forum pour avoir quelqu'un de plus compétent que moi
0
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
1 août 2017 à 16:52
en tout cas merci quand même
cordialement
0