VBA sélection d'une piece
jubatail
Messages postés
39
Statut
Membre
-
jubatail Messages postés 39 Statut Membre -
jubatail Messages postés 39 Statut Membre -
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 ???
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 ???
A voir également:
- VBA sélection d'une piece
- Pièce d'identité - Accueil - Services publics
- Mesurer une pièce avec son téléphone - Guide
- One piece torrent - Forum Jeux vidéo
- Excel compter cellule couleur sans vba - Guide
- Outil sélection illustrator ne fonctionne pas ✓ - Forum Illustrator
3 réponses
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
Où est le fichier ?
Le poster sur mon partage.fr, faire créer un lien, le copier et revenir le coller ici
Cdlmnt
Via
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
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
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
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
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.
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.
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
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
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
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