Recherche avec listview

pingouinal

XLDnaute Occasionnel
Bonjour le forum,

Je cherche à adapter un fichier de jp14 qui génère un moteur de recherche avec le résultat dans une listview. Cependant je bloque sur 3 points :

- ma base de donnée (dans laquelle je veux effectuée la recherche) commencé en B12 et non en A2 comme dans la plupart des fichiers que j'ai trouvé. Et je ne sais pas où modifier cela.

- le résultat dans la listview affiche généralement les X premières colonnes, mais là je voudrais qu'il affiche les colonnes B, C, D, E, J, N, O). L'idéal serait que je sache où modifier celà dans le code, car j'aurais peut-être des colonnes à ajouter par la suite.

- dans l'absolu j'aimerais pouvoir chercher soit par nom de fichier (colonne C), soit dans tout le fichier. Donc je voudrais créer un bouton "Recherche par nom" et un "Recherche globale". mais je n'arrive pas à trouver comment définir la zone de recherche.

Je joins en exemple un extrait de fichier très basique (sans donnée confidentielle et avec peu de lignes vu que le fichier original fait 5Mo), ne vous étonnez donc pas si ça ne paraît pas cohérent. Il n'y a pour le moment aucune macro dans ce fichier: non pas que je n'ai rien essayé jusque là, mais comme je bloque complètement, je pense que ça ne sert à rien. Par contre si certains veulent voir le fichier que j'essaie d'adapter, il s'agit de celui donné par jp14 dans le lien suivant : https://www.excel-downloads.com/thr...e-dans-une-base-de-donnees-sous-excel.108743/

D'avance merci à tous ceux qui prendront le temps de m'aider.
 

Pièces jointes

  • Listview.xls
    18.5 KB · Affichages: 368
  • Listview.xls
    18.5 KB · Affichages: 359
  • Listview.xls
    18.5 KB · Affichages: 380

CG2000

XLDnaute Occasionnel
Re : Recherche avec listview

Bonjour JP14,

Avec la base de ce fichier : Listviewrecherche (version 3).zip (44,8 Ko)
Est-il possible lorsqu'on clique sur ok que nous soyons directement diriger sur la bonne feuille et bonne ligne.

Merci par avance de ton service.Si cette requette n'est pas faisable, pas de regret JP14, la Recherche avec listview est de toute façon dans son état actuel: Génial.

et pingouinal merci(s) pour tes questions et sujet.
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Recherche avec listview

Bonjour

Bonjour JP14,

Avec la base de ce fichier : Listviewrecherche (version 3).zip (44,8 Ko)

lorsqu'on clique sur le bouton Research et si la recherche est fructueuse
la fenètre UserForm1 S'ouvre / puis on sélectionne l'info qui nous intéresse.
Puis avec le bouton Show the page la fenêtre "Vous avez sélectionnée la feuille ....." apparait.
Est-il possible lorsqu'on clique sur ok que nous soyons directement diriger sur la bonne feuille et bonne ligne.

Merci par avance de ton service.Si cette requette n'est pas faisable, pas de regret JP14, la Recherche avec listview est de toute façon dans son état actuel: Génial.

et pingouinal merci(s) pour tes questions et sujet.

Le message peut être supprimé, il est mis simplement pour montrer simplement les informations en retour.
Pour sélectionner la feuille et la ligne
Sheets(nomfeuille).Select
Range("a" & ligne1).Select

JP
 

CG2000

XLDnaute Occasionnel
Re : Recherche avec listview

JP14,

Grandiose:p.
Ta notion de partage représente parfaitement l'idée de ce forum.L'entraide.
Merci(s) encore une fois pour cette solution rapide, précise et juste... et pour ta générosité a répondre à des choses qui pourrait te paraître simple.

Merci(s)
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Recherche avec listview

Bonjour tout le monde,

J'ai moi aussi deux questions concernant la fenêtre d'info qui apparaît:

- serait-il possible de la faire apparaître sans fermer la liste contenant les résultats? Ou tout du moins de faire réapparaître la listview en fermant cette fenêtre (de telle sorte que l'on puisse regarder les infos de plusieurs résultats sans relancer la recherche)

- en admettant qu'on remplace cette fenêtre par un userform, est-il possible d'ajouter des boutons Suivant/Précédent qui permettraient d'afficher les infos des différents résultats présent dans la listview?

Si oui, quelle partie du code est à modifier? Et par quoi la remplacer?

D'avance merci pour les réponses.
 

jp14

XLDnaute Barbatruc
Re : Recherche avec listview

Bonjour tout le monde,

J'ai moi aussi deux questions concernant la fenêtre d'info qui apparaît:

- serait-il possible de la faire apparaître sans fermer la liste contenant les résultats? Ou tout du moins de faire réapparaître la listview en fermant cette fenêtre (de telle sorte que l'on puisse regarder les infos de plusieurs résultats sans relancer la recherche)
Le message affiché ne sert que d'exemple.
Ci dessous un exemple
Code:
Private Sub CommandButton6_Click()
If veriflig = 0 Then Exit Sub
Call MsgBox("Vous avez sélectionnée la feuille : " & nomfeuille _
            & vbCrLf & "" _
            & vbCrLf & "Ligne N° : " & ligne1 _
            & vbCrLf & "" _
            , vbInformation, Application.Name)

End Sub


- en admettant qu'on remplace cette fenêtre par un userform, est-il possible d'ajouter des boutons Suivant/Précédent qui permettraient d'afficher les infos des différents résultats présent dans la listview?

Il faut modifier cette procédure pour afficher un userform par exemple

Code:
Private Sub CommandButton6_Click()
If veriflig = 0 Then Exit Sub
'nomfeuille = ListView1.ListItems(nuitem).Text
'action = 1
'Unload Me
Userform2.show
End Sub

les variables publiques permettent de passer des informations pour afficher les données qui correspondent au choix de l'utilisateur.
"nomfeuille" contient le nom de la feuille
"ligne1" contient le numéro de la ligne sélectionnée.
Un lien avec un exemple d'un userform qui utilise des données d'une listview qui se trouve dans un userform différent.
https://www.excel-downloads.com/threads/recherche-multicritere-vba.117044/

JP
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Recherche avec listview

Bonsoir jp14,

J'ai réussi à adapter le userform au fichier. Par contre je bloque toujours sur le concept Précédent/Suivant. J'arrive à afficher les infos de la ligne suivante (avec quelque chose comme MyLine = MyLine + 1). Mais ça me prend la ligne suivante dans le fichier et non pas dans la listview. Je n'arrive pas à trouver l'astuce pour y arriver.

J'ai également un autre souci vis-à-vis des sommes de colonnes. J'aimerais faire une somme de la colonne heures, mais le total est 0. Peut-être à cause du format de cette colonne.
Et sur une autre colonne (Largeur), je souhaiterais faire une moyenne. J'ai bien essayé de diviser la somme par le nombre donné par le compteur de lignes de la listview, mais ça plante également.

J'imagine qu'Excel permet de solutionner ces trois problèmes, mais je sèche complètement. Aurais-tu une piste pour m'aider?

En tous cas, merci encore pour toute l'aide que tu m'as déjà apporté jusque-là.
 

jp14

XLDnaute Barbatruc
Re : Recherche avec listview

Bonjour

Bonsoir jp14,

J'ai réussi à adapter le userform au fichier. Par contre je bloque toujours sur le concept Précédent/Suivant. J'arrive à afficher les infos de la ligne suivante (avec quelque chose comme MyLine = MyLine + 1). Mais ça me prend la ligne suivante dans le fichier et non pas dans la listview. Je n'arrive pas à trouver l'astuce pour y arriver.

Pour réaliser cette opération il faudrait créer un tableaux qui contient les numéros des lignes des données présentent dans la listview.
Dans un module
public ligne2() as long

Dans l'userform

With ListView1
redim ligne2(.ListItems.Count+1)
For i = 1 To .ListItems.Count
ligne2(i)= Mid(.ListItems(i).Key, InStr(1, .ListItems(i).Key, "££") + 2, 50)
Next
End With

Ensuite utiliser ce tableaux pour afficher les données.

JP
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Recherche avec listview

Bonjour jp14,

Tout d'abord merci pour cette réponse.
Cependant je bloque sur son utilisation. Si je mets le code que tu m'as donné dans l'userform (de With à End With), la macro plante sur .ListItems.
Je ne comprends donc pas comment l'utiliser dans mon cas.
Et quand tu dis par la suite d'utiliser ce tableaux pour afficher les données, si j'écris dans mon bouton Suivant quelque chose comme ligne2 + 1, est-ce que ça te paraît correct ou ai-je une autre manipulation à faire?

Concernant la moyenne dont je parlais dans mon précédent message, j'ai réussi à faire la division mais je n'arrive pas à isoler le résultat de la somme avant de le diviser. La somme apparaît dans le label25. J'ai donc essayer des choses comme label25.Caption / ListView1.ListItems.Count mais Excel ne reconnaît pas label25.Caption comme un nombre et n'effectue pas la division.
Je veux le résultat dans un textbox, donc j'arrive par exemple à appeler le résultat de la somme dans le textbox, j'arrive à diviser un nombre défini par le nombre de lignes dans ma listview, mais si je veux diviser le résultat de la somme par le nombre de lignes dans la listview, ça plante.
Comment puis-je nommer le résultat affiché dans le label25 pour m'en servir dans une formule?

Pour ce qui est de la somme de la colonne des heures, j'ai réussi à contourner le problème : j'ai ajouter une colonne masquée (largeur = 0) qui affiche les heures sous le format nombre. Du coup la somme marche et dans un textbox je récupère le résultat au format hh:mm. Ca me pose juste problème quand le total est supérieur à 24h, mais j'espère pouvoir m'en sortir sur ce problème. ^_^'

D'avance merci pour ta réponse.
 

jp14

XLDnaute Barbatruc
Re : Recherche avec listview

Bonjour

Ci joint les procédures avec
Somme sur des heures minutes (code 2)
Moyenne d'une colonne
Transfert d'un tableau avec les lignes de la listview.

A tester

JP
 

Pièces jointes

  • varpublique.zip
    10.6 KB · Affichages: 96
  • varpublique.zip
    10.6 KB · Affichages: 90
  • varpublique.zip
    10.6 KB · Affichages: 95

pingouinal

XLDnaute Occasionnel
Re : Recherche avec listview

Bonjour jp14,

Merci beaucoup pour cette réponse.
J'ai testé la moyenne et ça marche parfaitement. Par contre pour la somme des heures, ça ne marche que partiellement. Je m'explique: la somme des heures s'effectue, mais pas celle des minutes. Ainsi j'ai dans mon exemple 13 lignes d'une heure et quelques chacune pour un total de 16:40, la formule m'affiche 13:00. J'ai essayé de voir ce qui pouvais poser problème, mais je n'ai pas réussi à trouver la solution. Après quelques essais j'ai par contre noté que le code ne prenait pas du tout en compte les minutes (par exemple si je fais la recherche sur une seule ligne dont la durée est 1:21, il m'affiche 1:00).

En ce qui concerne le bouton "Suivant/Précédent", j'ai réussi à l'adapter sur mon fichier et ça a l'air de bien marcher. J'ai cependant quelques bugs qui sont apparus depuis, comme l'impossibilité de fermer le UserForm1 (il se ferme et se réouvre aussitôt), mais pour ce point je vais encore essayer de travailler de mon côté pour comprendre ce qui pose problème.

Si tu as une idée sur ce qui pose problème pour les minutes (et pourquoi pas sur le problème de fermeture du userform, même si là je pense que c'est difficile sans voir mon fichier), je suis preneur de toute aide ou piste.

D'avance merci pour ta réponse.
 

jp14

XLDnaute Barbatruc
Re : Recherche avec listview

Bonsoir

Ci dessous la correction à apporter

£minute = Minute(£date1) + £minute


Ci joint les procédures avec des modifications.
Sélection de toute la listview ou sélection partielle.
Il suffit de cliquer sur les lignes désirées pour la valider ou pour ne pas la sélectionner.



JP
 

Pièces jointes

  • varpublique.zip
    12.4 KB · Affichages: 103
  • varpublique.zip
    12.4 KB · Affichages: 103
  • varpublique.zip
    12.4 KB · Affichages: 107
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Recherche avec listview

Merci beaucoup pour cette réponse jp14.
Mais je me sens un peu bête de ne pas avoir vu qu'il manquait juste un 1. ^_^'

Je vais regarder en profondeur les fichiers attachés dans la soirée.
Et je repasserai sûrement avec quelques questions dessus (et sur mon problème actuel si je n'arrive pas à le solutionner tout seul).

Bonne soirée
 

Discussions similaires

Réponses
19
Affichages
1 K

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea