Affichage de données filtrées dans listview

jsebt

XLDnaute Junior
Bonjour a tous,

Je suis en train de créer une base de données clients pour mon association.
La gestion d'un client se fait au travers de 2 sheets, "Clients" et "Data"
Dans mon userform, je voudrais afficher dans ma listbox "historique", tous les contacts avec le client sélectionné plus haut dans le userform.
Je souhaiterais également que le dernier mouvements enregistré avec ce client soit pré rempli avec possibilité de le modifier.
J'ai essayé plusieurs choses, sans succés, si quelqu'un à une idée ou une piste :). (J'ai trouvé cette solution, mais je n'ai pas réussi à l'adapter. Je continue d'essayer: https://www.excel-downloads.com/threads/afficher-des-donnees-filtrees-dans-listbox.102739/

Merci par avance pour votre aide.

Sébastien
 

Pièces jointes

  • GDV_0806.xlsm
    468.5 KB · Affichages: 35

jsebt

XLDnaute Junior
Bonjour le forum,

Merci Dranreb pour ton aide cette nuit. Au moins un point de débloqué.
Maintenant ma listview s'affiche correctement, mes titres de colonnes aussi, mais impossible d'afficher les données recherchées...
Je dois avoir une erreur dans mon code, et vu mon niveau j'ai du mal...
Si quelqu'un avait 2mn pour jeter un oeil?

Merci par avance, je ne sais pas comment j'aurai fait sans ce forum :)
 

Pièces jointes

  • GDV_0806.xlsm
    468.1 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
Bonjour.
Je n'y croyais pas tant ça me semblait improbable, alors que c'était pourtant la seule explication possible, mais j'ai bien fini par trouver une Public C As Byte dans le module Mdl_Variables. Vous ne pouvez alors pas l'utiliser comme Range dans une procédure sans l'y déclarer comme tel en variable locale. D’où le message de compilation Objet requis.
Notez que personnellement je ne fais jamais de Find dans une base de donnée. Je m'arrange pour savoir en permanence à l'avance où sont les éléments que je propose dans les ComboBox. J'ai des modules de service qui se chargent de gérer tout ça.
 

jsebt

XLDnaute Junior
Ahhhhhh mais biensûr... J'utilise déjà le C pour le pré remplissage de ma partie Client.... Merci encore :):)
Pour être honnête avec toi, je suis hyper débutant. Rien n'est totalement de moi. Je prends des bouts de codes a droite et à gauche et j'adapte comme je peux. J'apprends en même temps du coup. J'essaye de créer l'outils adéquat pour mon asso, sans budget, alors je mets les mains dedans :)
Heureusement que beaucoup de gens comme toi prennent le temps pour les petits comme moi :) . Je suis clairement bien au delà de mes compétences en la matière... Mais je m'améliore chaque jour.

J'ai utilisé le "find" parce que c'est le code que j'ai trouvé pour utiliser listview. Après le but est de pré remplir la partie "dernier mouvement" avec le dernier mouvement du client sélectionné dans ma "recherche par nom" ou avec la ligne sélectionnée dans la listview avec modification possible.
Une chose à la fois, mais si tu as une autre piste à suggérer, n'hésite pas je suis preneur :) J'ai vu pas mal d'exemple avec les listview, d'ou ce choix.
Merci encore une fois.
 

Dranreb

XLDnaute Barbatruc
Disons que la ressource permet d'éviter d'avoir à programmer pas mal de choses au prix de quelques principes généraux: ne jamais travailler directement avec les cellules, toujours par l'intermédiaire de tableaux dynamiques VBA d'une seul ligne ou de toute la base selon le besoin, et travailler de préférence avec des plages mises sous forme de tableaux Excel.
Je joins le classeur précurseur du complément xlam.
 

Pièces jointes

  • CBxLCtlA.xlsm
    156.8 KB · Affichages: 41

jsebt

XLDnaute Junior
Merci DranReb, mais je crois que là... On est largement au dessus de mes compétences...

Bon du coup, j'ai trouvé un code qui fait exactement ce que je veux faire. J'essaye de l'adapter, mais idem, ca bug. Je continue de chercher, tout en continuant d'espérer votre aide :)

J'obtiens une erreur: Impossible de lire la propriété Column.
Les 2 fichiers sont joints. Le 1er est le code original le 2ème est ma tentative d'intégration dans mon document.
Merci par avance pour votre aide.

Sébastien
 

Pièces jointes

  • FormFiltre5ComboBoxs.xls
    216 KB · Affichages: 37
  • GDV_1006.xlsm
    485.3 KB · Affichages: 35

Dranreb

XLDnaute Barbatruc
Mais non, ce n'est pas au dessus de vos compétences.
Il faut juste comprendre la philosophie, c'est tout. Après vous serez étonné du peu de programmation qui restera dans votre UserForm.
Les 9 dixièmes de la programmation seront dans la Sub UserForm_Initialize. Tout le reste ne sera qu'une série de minuscules procédures.
 

ChTi160

XLDnaute Barbatruc
Bonjour Sebastien
Bonjour Bernard, le Forum
le message vient du fait que dans ta procédure :
VB:
Private Sub ListBox1_Click()
    For i = 0 To Ncol - 1
      Me("TextBox" & i + 1) = Me.ListBox1.Column(i)
    Next i
    Me.Enreg = Me.ListBox1.Column(Ncol)
    mode = "Modif"
End Sub
la variable
n'a pas de valeur(vide)
il te faut donc récupérer l'index de la ligne , de la ListBox1 , qui a été sélectionnée !
soit un truc du genre
VB:
Private Sub ListBox1_Click() 
     Ncol=Me.ListBox1.listIndex '<---------- Ici
    For i = 0 To Ncol - 1
      Me("TextBox" & i + 1) = Me.ListBox1.Column(i)
    Next i
    Me.Enreg = Me.ListBox1.Column(Ncol)
    mode = "Modif"
End Sub
Pas tout testé
jean marie
 

jsebt

XLDnaute Junior
Bonjour Jean Marie, Dranreb et le forum,

Décidément, sur tous les fronts :) :) Merci encore, je vais regarder çà.
Dranreb, j'avoue je n'ai pas trop eu le temps et n'ai fait que survolé ton fichier. Je vais le regarder de plus pres et je reviendrai vers toi si j'ai des questions.
Merci a vous 2 de m'aider autant.

Sébastien
 

jsebt

XLDnaute Junior
Bonjour a tous,

Merci pour votre aide, j'ai réussi a adapter le code et çà marche.
Encore quelque soucis à gérer mais mon idée de départ fonctionne:
Il me reste à faire:
- Autosélection du premier client
- Autosélection du contact le plus récent avec le client
- Trouver comment augmenter le nombre de caractères visibles dans ma textbox "Commentaire"
- Trouver comment utiliser le même système que pour les labels automatique pour les checkbox
- Enregistrer les modfications sur un client et sur les mouvements avec le même bouton
- Quelques petites bidouilles qui ne fonctionnent pas
- Trouver comment afficher le nom du groupe au lieu de sa référence dans le planning
- De la mise en page
L'essentiel est fait grâce à vous. Merci beaucoup.(Jean Jaques tu m'as beaucoup aidé à comprendre un peu plus ce que je faisais, même si je suis loin d'être au top :))
Bonne journée à vous :)
 

Pièces jointes

  • GDV_1306.xlsm
    521.3 KB · Affichages: 6

ChTi160

XLDnaute Barbatruc
Bonjour Sebastien
Bonjour le fil ,le Forum
pour la première demande si j'ai bien compris mettre un
cboClients.ListIndex=0 devrait suffire , après avoir alimenté le ComboBox (cboClients)
VB:
With .cboClients
      .ColumnCount = 9
      .ColumnWidths = "0;0;1;0;0;0;0;0;0"
      .Clear
On Error Resume Next
   For Lgn = 2 To UBound(Tab_Gen, 1)
      Str_Nom = Tab_Gen(Lgn, 5)
'**********************
Coll_Noms.Add Str_Nom, CStr(Str_Nom)
'**********************
   If Err.Number = 0 Then
      .AddItem Tab_Gen(Lgn, 1) 'Str_Nom
   For C = 2 To UBound(Tab_Gen, 2)
      .List(.ListCount - 1, C - 1) = Tab_Gen(Lgn, C)
   Next C
   End If
   Err.Clear
   Next Lgn
   .ListIndex = 0 '<----------------- Ici
End With
mais !
Questions :
Pourquoi le
VB:
mots = Split(Trim(Me.ComboBoxRef), " ")
Peut il y avoir plusieurs valeurs (Référence Groupe) par Nom de Client ?
et si non , pourquoi un ComboBox plutôt qu'un TextBox
a quoi sert le TextBox (TextBox21) ?
pour
Trouver comment augmenter le nombre de caractères visibles dans ma textbox "Commentaire"
Tu agrandis le TextBox et tu le mets en MultiLine = true et WordWrap = true , je pense
jean marie
 
Dernière édition:

jsebt

XLDnaute Junior
Bonjour Jean Marie, merci pour ces infos.

-
VB:
mots = Split(Trim(Me.ComboBoxRef), " ")
J'ai utilisé un code de recherche globale sur plusieurs colonnes. Que je n'utilise pas actuellement, mais je m'étais dit que de garder la fonctionnalité n'était pas mauvais... Mais aucune nécessité, je peux l'enlever.
- Textbox21 ne sert à rien, je viens de l'enlever
- Commentaire: J'avais trouvé tout seul. Ca marche bien.
- Ma ComboxRefGr, est en fait une textbox, je l'avais déjà changé. Mais pas encore modifié le nom.
- La modification que tu me suggères pour l'auto sélection du client me renvoie une erreur: L'indice n'appartient pas à la sélection. (Pas encore eu le temps de tester plus loin, je rentre à peine)

Voilà pour l'update. Merci pour ton aide. Je vais essayer de travailler la dessus ce soir.
Merci encore et bonne soirée.

Seb
 

jsebt

XLDnaute Junior
Bonjour à tous,

Je continue d'avancer… Ca devient urgent de mettre en production :)

Update:

- J'ajoute mes dates au moyen d'un userform. Mais le format d'enregistrement me génère un bug dans la génération du planning
- Je cherche un moyen pour imprimer les plannings sur une période. (J'ai demandé un peu de support au créateur du code, même si je cherche aussi )
- Afficher le nom du groupe plutôt que la référence dans le planning (idem, support demandé au créateur du code, même si je cherche aussi )
- Le bouton enregistrer les modifications sur le client sélectionné
- Le bouton enregistrer les modifications sur le mouvement sélectionné( pour le moment, plusieurs boutons, que je dois encore modifier)
- Et mon plus gros soucis: Je souhaiterais qu'à l'ouverture du formulaire, le premier client soit auto sélectionné ainsi que le dernier mouvement (le plus récent) enregistré pour ce client.

- Nettoyage, vérification du code.
- Test
- Mise en production :):))
- Révolution dans le fonctionnement de l'asso :)

Voilà voilà… Je commence à voir le bout du tunnel:)
Merci à tous ceux qui m'aident et continuent de m'aider. Sans vous… Je serai perdu.
Nous utilisons actuellement une dizaine de documents excels différents tous remplis manuellement. Sans aucune capitalisation d'une année à l'autre. Pas de stats, pas d'analyse... Ce fichier va être d'une utilité énorme :)
 

Pièces jointes

  • GDV_1306 (version 1).xlsb.xlsm
    547.9 KB · Affichages: 13

ChTi160

XLDnaute Barbatruc
Bonjour Sebastien
Bonjour le Fil ,le Forum
pour ce qui est de ta première demande.
J'ajoute mes dates au moyen d'un userform. Mais le format d'enregistrement me génère un bug dans la génération du planning
peux tu être plus précis sur le Format d'enregistrement et le Bug ?
peut être en modifiant le formatage lors de l'enregistrement .
par
VB:
.Range("G" & L).NumberFormat = "dd/mm/yyyy" '<----- Ici
.Range("G" & L).Value = Arrivee 'Date arrivée
.Range("J" & L).Value = Depart 'Date départ
.Range("J" & L).NumberFormat = "dd/mm/yyyy"'<----- Ici
pour la troisième
Afficher le nom du groupe plutôt que la référence dans le planning
Pas évident , car pas de référence à cette donnée dans la Base Data(à moins de créer une fonction qui recherche la Correspondance entre le nom du groupe et la référence du Groupe dans Feuille Clients!
jean marie
 

jsebt

XLDnaute Junior
Bonjour Jean Marie, et merci de continuer à me guider :)
A l'enregistrement d'un nouveau mouvement, j'obtiens une erreur 13, incompatibilité de type. Quand je copie mes dates de la ligne au dessus, l'erreur disparait… J'ai essayé de changer le format dans tous les sens sans succès...

Et pour le nom du groupe… C'est ce que je pensais. Je vais ajouter une colonne RechercheV pour récupérer les noms dans ma feuille Data… Pas idéal, mais ca fera le travail.
Je vais y arriver :)
Bonne fin de journée.

Sébastien
 

Discussions similaires

Réponses
1
Affichages
379
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 841
dernier inscrit
ferid87