Moteur de recherche ligne qui se masque
Bonjour à tous,
Voilà je vous explique, j'ai un fichier où il y a un "moteur de recherche" qui me surligne les lignes où les mots clefs apparaissent.
Ce que j'aimerais c'est les lignes au lieu qu'elles se colorent, c'est que celles qui ne contiennent pas le mot clefs "disparaissent", se masque afin qu'il n'y ait que les lignes concernées qui soient en haut de la page.
Vous savez comment faire ça ?
Je vous remercie
Bonjour,
Oui c'est tout à fait possible de faire ça
Je te joins le fichier modifié:
Je ne suis pas sûr que ça serait très rapide sur un fichier plus conséquent par contre
Re,
je n'ai pas modifié grand chose en vrai
J'ai rajouté un Cells.entirerow.hidden = false pour montrer toutes les lignes en début de code, je suis allé cherché la dernière ligne remplie sur ton tableau avec la colonne A (peut-être à modifier pour la colonne B d'ailleurs...), puis je parcours un tableau là où tu parcourais des cellules pour ensuite voir quelles lignes contiennent la valeur cherchée (comme toi), puis au lieu de mettre une mise en forme aux cellules qui contiennent le mot cherché, j'ajoute la valeur dans la listbox (comme tu le faisais), mais surtout, je masque les lignes qui ne contiennent pas le mot cherché
En soit le programme reste quasiment identique, je l'ai justé optimisé le code, supprimer les mises en forme, et ajouté une action poru les lignes à masquer
si jamais tu as besoin d'explications pour le code, n'hésite pas à me demander
Re,
je n'ai pas modifié grand chose en vrai
J'ai rajouté un Cells.entirerow.hidden = false pour montrer toutes les lignes en début de code, je suis allé cherché la dernière ligne remplie sur ton tableau avec la colonne A (peut-être à modifier pour la colonne B d'ailleurs...), puis je parcours un tableau là où tu parcourais des cellules pour ensuite voir quelles lignes contiennent la valeur cherchée (comme toi), puis au lieu de mettre une mise en forme aux cellules qui contiennent le mot cherché, j'ajoute la valeur dans la listbox (comme tu le faisais), mais surtout, je masque les lignes qui ne contiennent pas le mot cherché
En soit le programme reste quasiment identique, je l'ai justé optimisé le code, supprimer les mises en forme, et ajouté une action poru les lignes à masquer
si jamais tu as besoin d'explications pour le code, n'hésite pas à me demander
Je pense effectivement que je vais lui dire d'aller chercher la colonne B parce que la A ne sera pas toujours remplie.
Tu peux m'expliquer un peu plus pour le LBound et le UBond?
Re!
Oui je peux t'expliquer sans problème
Lbound et Ubound permettent de connaître les valeurs des bornes inférieures et supérieures d'un tableau
Quand tu crées un tableau, il peut commencer par la ligne 0, la 1, la 2... ça dépend comment tu le génères, Lbound() permet de connaître ce numéro, Quand tu mets Lbound(tableau,1), tu renvoies la borne inférieure de la première dimension de ton tableau, les dimensions, tu peux les voir comme ceci: 1: lignes, 2: colonnes, 3: feuille
Ainsi si tu dis: Lbound(tableau,1), tu voudras savoir quel est le premier numéro de ligne de ton tableau, si tu écris Lbound(tableau,2), tu voudras le premier numéro de colonne, puis avec 3, le premier numéro de feuille.
ubound quand à lui permet de savoir la borne supérieure, le dernier numéro de ligne, de colonne, de feuille
Quand j'écris:
For i = Lbound(tableau,1) to ubound(tableau,1)
ça veut dire que je parcours toutes les lignes du tableau en allant de la première à la dernière, sans avoir besoin de savoir si le tableau commence par1, 2, 0, ou si il termine à la ligne 30 ou 100, ou encore 15243.
C'est très pratique pour un tableau dont tu ne connais pas à l'avance la taille, parce qu'une fois que tu mets ça, tu n'as plus besoin de modifier cette ligne de code, sauf cas exceptionnels
Re!
Oui je peux t'expliquer sans problème
Lbound et Ubound permettent de connaître les valeurs des bornes inférieures et supérieures d'un tableau
Quand tu crées un tableau, il peut commencer par la ligne 0, la 1, la 2... ça dépend comment tu le génères, Lbound() permet de connaître ce numéro, Quand tu mets Lbound(tableau,1), tu renvoies la borne inférieure de la première dimension de ton tableau, les dimensions, tu peux les voir comme ceci: 1: lignes, 2: colonnes, 3: feuille
Ainsi si tu dis: Lbound(tableau,1), tu voudras savoir quel est le premier numéro de ligne de ton tableau, si tu écris Lbound(tableau,2), tu voudras le premier numéro de colonne, puis avec 3, le premier numéro de feuille.
ubound quand à lui permet de savoir la borne supérieure, le dernier numéro de ligne, de colonne, de feuille
Quand j'écris:
For i = Lbound(tableau,1) to ubound(tableau,1)
ça veut dire que je parcours toutes les lignes du tableau en allant de la première à la dernière, sans avoir besoin de savoir si le tableau commence par1, 2, 0, ou si il termine à la ligne 30 ou 100, ou encore 15243.
C'est très pratique pour un tableau dont tu ne connais pas à l'avance la taille, parce qu'une fois que tu mets ça, tu n'as plus besoin de modifier cette ligne de code, sauf cas exceptionnels
Ah d'accord !
Effectivement c'est très pratique !
Je te remercie pour ces éclaircissements en tout cas.
De rien
Si tu veux d'autres explications, il y a aussi la documentation de microsoft que tu peux trouver ici : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/lbound-function