PROBLEME DE CONDITION ! Création d'un moteur de recherche en VBA
Bonjour ,
Je suis face a une chose qui pour moi est un case tête !
je vous explique mon problème, j'ai besoin de créer un espèce de moteur de recherche pour trouvé des objets dans le stock de mon travail .
je pars d'une base de données, composé de 5000 lignes sur 6 colonnes chacune contenant des informations différentes du style "nomenclature de l'objet, dénomination, une image, et la localisation au seins du stock, etc"
Pour le moment j'ai cette formule :
Sub masquer_afficher()
End Sub
Celle ci me permet de masquer tout les éléments de ma listes à l'action d'un bouton et de les faires réapparaître (> je l'ai trouvé sur un tuto ) .
Cependant , ce que moi j'aimerai pouvoir faire c'est mettre une condition supplémentaire à cette formule mais > je ne sais ni où ni comment
>J'aimerai lié une cellule texte au bouton , et que > SI les caractères inscrits dans cette cellule texte se retrouvent dans une des lignes que je lui demandes de cacher > ALORS il ne me cachent pas les lignes contenant ces caractères me les laissant donc dans la liste.
Ainsi , seul les lignes comportant les caractères affichés dans la cellule texte apparaîtraient à l'écran
> exemple :
SI j'inscrit dans ma cellule texte : "Mécanique", ou "mec"
seul les lignes contenants quelques part dans une des colonnes le mots "mécanique" ou la suite de lettre "mec" ne disparaîtraient pas de ma liste .
Cependant c'est ce que j'aimerai, mais je n'y arrive pas tout seul !
pouvez vous m'aider SVP ?
Merci d'avance! J'ai beau chercher mais je n'ai pas assez de connaissance et je bloque !
( je ne sais pas si j'ai su être clair, n'hésitez pas à me posez des questions, je suis a fond dessus ! )
Une bonne journée à tous !
Bonjour et bienvenue
le plus simple est d'utiliser la fonction filtre avancé
il suffit ici de modifier la valeur en B1
supprime la valeur et tout ré-apparaîtra
attention aux accents ... mec et méc ne sera pas la même chose !
tes données doivent être structurées en tableau
Bonjour et bienvenue
le plus simple est d'utiliser la fonction filtre avancé
il suffit ici de modifier la valeur en B1
supprime la valeur et tout ré-apparaîtra
attention aux accents ... mec et méc ne sera pas la même chose !
tes données doivent être structurées en tableau
Bonjour steelson !
Merci beaucoup pour cette réponse rapide ! je viens d'ouvrir ton fichier et ça m'a l'air d'être super je fais le test dans mon fichier et je reviens vers toi mais ça a l'air d'être très bien .
Déjà mille merci pour ta réaction rapide !
Bonjour et bienvenue
le plus simple est d'utiliser la fonction filtre avancé
il suffit ici de modifier la valeur en B1
supprime la valeur et tout ré-apparaîtra
attention aux accents ... mec et méc ne sera pas la même chose !
tes données doivent être structurées en tableau
Me revoilà Steelson,
Ce code est super et fonctionne très bien dans la version que tu m'as envoyé , cependant lorsque je le mets dans mon projet cela ne fonctionne pas .
J'ai demandé à un collègue qui a plus de connaissance que moi, et il pense que le problème vient du fait , que mes données à moi sont dans un tableau , et entre "" doivent y rester( surtout pour les utilisateurs qui utiliserons la fonction "tri" .( nous avons fait le test dans ton exemple en transformant le tableau rouge en tableau et cela ne fonctionne pas non plus )
dans ma colonne A j'ai des photos ( des miniatures qui sont lié en hypertexte a une "maxiture" qui s'ouvre au clic )
dans ma colonne B C D et F j'ai des informations textes ( c'est dans ces informations que je dois chercher mes charactères( toutes les informations sont écrit en lettres capitales).
lors du résultât je dois également voir sur ma lignes mon image.
( et tout ceci se trouve dans un tableau de 5000 lignes sur 6 colonnes ( de A a F )
Penses tu pouvoir me renvoyé un exemple similaire à ce que tu m'as envoyé avec le fait que ta colonne 1 à 6 soit dans un tableau (pour le tableau rouge et bleu de ton exemple) ?
(Désolé si je ne suis pas très clair , c'est assez dur a expliquer et je ne peux malheureusement pas envoyé le projet initiale )
C'est vraiment super sinon !
Burg
Non seulement ce n'est pas le problème, mais il faut qu'ils le restent.J'ai demandé à un collègue qui a plus de connaissance que moi, et il pense que le problème vient du fait , que mes données à moi sont dans un tableau , et entre "" doivent y rester
Peux-tu me donner le nom du tableau et le nom EXACT des 6 colonnes ?
Non seulement ce n'est pas le problème, mais il faut qu'ils le restent.J'ai demandé à un collègue qui a plus de connaissance que moi, et il pense que le problème vient du fait , que mes données à moi sont dans un tableau , et entre "" doivent y rester
Peux-tu me donner le nom du tableau et le nom EXACT des 6 colonnes ?
le tableau n'a pas de nom ( ou alors je ne comprends pas ta question ).> j'ai juste selectionner un espace et convertis en tableau excel( celui avec les petite fleche dans le bas droit de mes cases d'entete de colonnes) .
Le nom des 6 colonnes est le suivant
A..............................B.......................C........................D...........................E.............................F
image..................denomination....localisation........nomenclature.....planPDF.............Emplacement
/la c'est des images /ici des ecrit ......./ici des ecrit..../ici des ecrit..../ici un lien......../ici des ecrit
Je ne sais pas si c'est ca que tu me demandais ? Merci encore
Burg
pas grave je m'en suis sortile tableau n'a pas de nom
dis moi si c'est ok
Le mot clé doit être en B1
Ensuite, à partir de la ligne 3 il y a les critères issus du mot clé
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub
If Range("B1") = "" Then
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Else
ActiveSheet.ListObjects(1).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A3").CurrentRegion, Unique:=False
End If
End Sub
pas grave je m'en suis sortile tableau n'a pas de nom
dis moi si c'est ok
Le mot clé doit être en B1
Ensuite, à partir de la ligne 3 il y a les critères issus du mot clé
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub If Range("B1") = "" Then On Error Resume Next ActiveSheet.ShowAllData On Error GoTo 0 Else ActiveSheet.ListObjects(1).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A3").CurrentRegion, Unique:=False End If End Sub
Je n'arrive a rien , j'ai réussi a trouvé une clé USB dans ce fouilli voici la base de mon fichier ( tu constatera qu'il n'y a pas encore 5000 ligne remplie , mais je le prépare pour 5000 ) ici c'est mon fichier Test avant de me lancer dans l'encodage en boucle .
Je t'ai mis la version avec mon bouton qui cache ou montre tout . car c'est l'endroit ou je me suis arrêter qui fonctionne peut etre comprendras tu mieux mon probleme a partir de ce fichier .
( je ne sais pas si il acceptera de s'ouvrir chez toi étant donner que les miniatures et les hyperlien vers les maxitures ne sont pas avec le fichier meme . mais bon si il s'ouvre sans , sache que dans la colonne A ce sont des miniature cliquable qui ouvre en hyper lien les maxitures .
je t'envoie le fichier en message privé . ( désolé les autres , mais je ne peux pas faire circuler tout ca )
Merci encore mille fois de ton temps steelson,
Burg
mets le fichier sur www.cjoint.com et mets le lien en mp
UN BIG MERCI A TOI STEELSON tu es mon Sauveur !!!!
Autre solution qui laisse les flèches en place
Il faut dans ce cas ajouter une colonne avec comme formule :
=SIERREUR(CHERCHE($D$3;[@denomination]);0)+SIERREUR(CHERCHE($D$3;[@localisation]);0)+SIERREUR(CHERCHE($D$3;[@nomenclature]);0)+SIERREUR(CHERCHE($D$3;[@[Emplacement ]]);0)Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D3")) Is Nothing Then Exit Sub
If Range("D3") = "" Then
Range("Tableau1[#Headers]").AutoFilter
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7
Else
Range("Tableau1[#Headers]").AutoFilter
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:=">0", Operator:=xlAnd
End If
End Sub