|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : février 2012 Messages : 4 ![]() |
Bonjour,
Je suis en train de développer une boite de dialogue useform permettant de remplir via cette boite un tableau excel. Cette boite permet aussi via une fonction de recherche d'une valeur dans une colonne A, de faire apparaitre dans les autres textbox les valeurs d'autres colonnes (B,C,D,E,etc...) de la ligne correspondant à ma valeur recherchée. Cependant, mon problème est que ma valeur recherché peut apparaitre sur plusieurs lignes, il faudrait donc que dans ce cas de doublons, une combobox apparaisse avec les valeurs de la colonne B correspondante aux lignes doublons ( valeurs de la colonne A). Ainsi je pourrais en choisissant une valeur parmi cette liste (sorte de filtre) faire afficher les valeurs des autres colonnes de la même ligne dans mes autres txtbox. Voici comment je récupère les valeurs des cellules pour les visualiser dans mes textbox. Code :
Je vous remercie par avance. Benoît |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Architecte Inscription : mai 2002 Messages : 1 057 ![]() |
J'ai une application similaire.
Une fois la première valeur trouvée dans la colonne, je cherche si cette valeur existe plus loin. Si c'est le cas, j'applique un traitement permettant un affichage des cellules voulues. Il est ainsi possible de stocker les n° de ligne pour un usage correspondant à ce que l'on souhaite |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2012 Messages : 4 ![]() |
Ok, quel code à tu mis pour cette solution???
|
|
|
00
|
|
|
#4 | ||||
|
Membre éprouvé
![]() Franck PRESSEInscription : août 2010 Messages : 202 ![]() |
Bonjour,
1- Citation:
2- Tu utilises la méthode Find à partir de la saisie dans un textbox par un utilisateur. S'il y a erreur de saisie, le code va planter (sauf si l'on traite l'erreur par On Error blabla...). Pour contourner ce problème, il convient, au lieu de chercher tout de suite le n° de ligne (i = .Cells.Find(TxtDDMO_MAJ).Row), de chercher l'objet Range contenant la valeur cherchée. Si la macro ne trouve pas ton Range, elle ne plantera pas. Exemple : Code :
Citation:
==> Change ton TextBox ("Txtdesignationpiece") par une ComboBox, corrige ton code "Find", regarde Find.Next de ton côté, et reviens pour plus de renseignements...
__________________
Cordialement, Franck P. Ps : n'oubliez pas de placer vos posts comme "résolus" ( ) si tel est le cas...
|
||||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : février 2012 Messages : 4 ![]() |
J'ai essayé le find.next, avec le code exemple dans l'aide de VBA, mais j'ai une erreur à chaque fois, au niveau du "set c = ..."
Pour la combobox, le problème est que ma textbox "Txtdesignationpiece" sert dans la cas de l'ajout de ligne de mon tableau. C'est pour cela que je souhaite utiliser une listbox ou combobox permettant de choisir une valeur de la colonne désignationpiece dans le cas d'un doublon sur ma txtbox "txtDDMO_MAJ". En fait, il me faudrait récuperer les lignes des doublons et permettre le choix de la ligne, et c'est la que je bloque. Je ne sais pas comment stocker tout mes doublons dans une variables et les afficher dans la combobox ensuite. Merci pour la modif du range, en effet c'est plus stable en cas d'erreur de saisie. Bon j'ai essayé d’intégrer le find next, mais maintenant j'ai une erreur, impossible d'afficher le useform 2 et ma listbox.AddItem ne fonctionne pas non plus. Code :
Cependant j'ai encore quelques soucis pour l'afficher et je comprend pas pourquoi!!!! |
||
|
|
00
|
|
|
#6 | ||||
|
Membre éprouvé
![]() Franck PRESSEInscription : août 2010 Messages : 202 ![]() |
Bonjour,
Tes erreurs : Lorsque tu veux remplir la listbox d'un second UserForm à partir du premier, il faut préciser l'userform en question. Par défaut, VBA pense que tu veux remplir la listbox1 de l'usf1 qui n'existe pas ===> plantage. D'ou : UserForm2.ListBox1.AddItem La syntaxe également : Find.Next n'existe pas. Voir FindNext Ne pas oublier l'espace après AddItem : Code :
UserForm2.ListBox1.AddItem .Range("B" & RngCherché.Row) 1 userform comprenant : 1 combobox et des textbox 1 userform comprenant : 1 listbox Code de l'Userform1 : Code :
Code :
__________________
Cordialement, Franck P. Ps : n'oubliez pas de placer vos posts comme "résolus" ( ) si tel est le cas...
|
||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2012 Messages : 4 ![]() |
Merci beaucouP de ton aide, c'est bon j'ai reussi a faire ce que je voulais en utilisant et adaptant ton code.
Il me reste juste une Petite chose a voir, afin de fiabiliser la reponse. Pour afficher mes autres txtbox il faut que je ressorte la ligne du choix fait dans la listbox, donc je vais modifier la listbox en 2colonnes en cachant la deuxieme colonne qui aura les numeros de lignes des recherches faites avec le find. J'utiliserai donc ces valeurs pour afficher les autres txtbox... Je reviens vers toi si j'ai des difficultés. Merci encore |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Franck PRESSEInscription : août 2010 Messages : 202 ![]() |
Bonjour,
De rien... Avant de te lancer tête baissée dans une listbox multicolonnes ou de multiplier les contrôles dans ton userform, je te recommande vivement la lecture de ce tutoriel sur les contrôles d'userform. regarde tout ce qu'il est possible de faire avec avant de réaliser ton projet. Sinon n'hésite pas à poser toutes les questions nécessaires.
__________________
Cordialement, Franck P. Ps : n'oubliez pas de placer vos posts comme "résolus" ( ) si tel est le cas...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com