Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formulaire combobox multiple et somme de listview

woodfoot

XLDnaute Nouveau
Bonjour a tous

Je viens vers vous pour un double probleme.

Je me suis servi du fichier ci-dessous trouvé sur le forum pour l'adpater a mes propres besoins.
Je me suis servi du fichier de "vaucluse immo" ici :https://www.excel-downloads.com/threads/filtre-suite-a-choix-dans-une-combobox.109375/

Mon probleme est :
Je voudrais pouvoir faire plusieurs tri grace aux combobox.
Faire un tri dans la combox 1, puis dans la 2 ou la 4 ou autres etc...ou commencer sur un choix de la 2, ou de la 3 etc..
Que tout ceci soit interactif, que je n'ai pas a appuyer sur un bouton pour valider le choix 1 puis 2 puis 3 etc...
Je voudrais qu'apres un choix de la combobox 1, il me propose les choix qui resultent dans la listview en combobox 2, ou en 3, ou en 4... que les choix proposés soient "intelligents", qu'ils resultent montrent ce qu'il reste comme choix possible.

Autre probleme, je souhaiterai que mon Label 17 fasse la somme la colonne G
et que le label 18 compte le nombre de ligne restant.

Pour ca, j'ai consulté ce post ( https://www.excel-downloads.com/threads/calculer-la-somme-de-la-6-0-colonne-dune-listview.107414/ )
Mais je n'arrive pas a adapter le code a mon cas !!!

Merci a tous d'avance.

Et bonnes fetes a vous
 

Pièces jointes

  • 122208 Fichier To post.zip
    34.3 KB · Affichages: 230

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

bonjour a tous
bonjour Pierre-Olivier.

Bons lendemains de fetes a tous.

J'ai regardé ton fchier Pierre-Olivier, c'est parfait, exactement ce que je voulais.

Par contre, j'ai un petit souci, quand je fais un choix, et que je clique sur un ligne ou les tickbox sont cochés, et que je clique apres sur une ligne ou les tickbox ne sont plus cochées, et bien elles restent toutes les 3 cochées, au lieu que ce soit interactif, que ca aille lire dans mon tableau ou dans ma listview et que ca me montre les tickbox non cochée.
On dirait que ca prend bien par defaut les valeurs des lignes jusqu'a ce que les tickbox rencontrent une info "coché" et sa garde apres cette information.

Surtout, une fois que les tixkbox ont lu l'info "coché" sur une ligne, si je fais une reinitialisation et que je reviens sur la meme ligne, la tickbox affiche "coché", surement en reference au probleme precedent, alors qu'elle ne l'ai pas...
bizarre, non ?

Merci d'avance a tous pour votre aide.
 

Pièces jointes

  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 45
  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 45
  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 45

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Re,

Le fichier modifié, ca devrait coller.
Le fait de cocher ou de décocher les checkbox n'inscrit ou n'efface plus directement les données sur la feuile.
Le code du bouton de "Modification" contrôle l'état des CheckBox et agit en fonction.
Le code quand tu clicks sur une ligne de la ListView vérifie les colonnes 16,17,18 et coche les checkbox concernés.
Le bouton de "Reinitialisation" efface tout et décoche les CheckBox.

A+
 

Pièces jointes

  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 53
  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 51
  • 122408 Fichier To post V4.zip
    39.9 KB · Affichages: 56

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

bonjour a tous

bonjour Pierre-Olivier

Il me reste un petit point sur lequel je bloque.
Je souhaiterais avoir des labels qui affichent les données de certaines colonnes, et evidement que tout ceci soit interactifs avec le choix des lignes dans la listes view.

J'ai crée des labels, de Label23 a Label28, et je voudrais que ces labels affichent les resultats des colonnes de 10 a 15:
Avec au chargement, le titre des colonnes pour lesquelles elles vont donner les infos. Donc dans userform initialize, je comptais mettre :

For k = 10 To 15
Controls("Label" & k + 13).Caption = ListView1.ColumnHeaders(k)
Next

Et dans MiseAJourTB, je comptais mettre (en copiant ton code, caar je tatonne...)

v = 23
For z = 10 To 15
Controls("Label" & v) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(z)
Next
v = v + 1


Mais ca ne marche pas !! ca buggue de partout.
Du coup, j'ai enlevé ce code.
Ca me parait pourtant simple, c'est juste de l'affichage, il n'y a pas d'ecriture ni de correction a apporter, alors je comprends pas ma faute.

Merci en tout cas pour ton aide, ce fichier ressemble a une veritable oeuvre d'art.

Merci a tous
 

Pièces jointes

  • 123008 Fichier To post V5.zip
    26.8 KB · Affichages: 69

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Avec au chargement, le titre des colonnes pour lesquelles elles vont donner les infos. Donc dans userform initialize, je comptais mettre :

Il faut dans la procédure Userform initialize:

Rajoute une variale d déclarée en Byte au début du code
Code:
Dim i As Long, k As Byte, d As Byte
Ensuite
Code:
.../...
 .ListItems(1).Selected = False
End With

For d = 23 To 28
Controls("Label" & d).Caption = Sheets("Data").Cells(1, d - 13)
Next

Alim_Combo
TTotal
../...
Et dans MiseAJourTB, je comptais mettre (en copiant ton code, car je tatonne...)

Là tu rajoute une variable c comme tout à l'heure puis:
Code:
.../...
  End If
  u = u + 1
Next

For c = 23 To 28
Controls("Label" & c).Caption = Sheets("Data").Cells(Numlign, c - 13)
Next

End Sub
.../...

Les colonnes 10 à 15 ne font pas parties de la Listview donc tu dois utiliser les données de la feuille "Data" pour remplir les nouveaux Labels.

A+
 

aubelix

XLDnaute Impliqué
Re : Formulaire combobox multiple et somme de listview

Bonjour bqtr.

Pourrais-tu STP essayer de me donner un coup de main sur mon
problème à savoir le post : Explication ListView.
Ce que tu as réalisé, correspond tout à fait à que j'aurais aimé réaliser.

Par avance merci de ton aide.
Cordialement.

Bonnes fêtes de fin d'année.
 

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

Merci !!

J'y etais presque quand meme, non ?
J'ai rajouté les colonnes manquantes dans la listview avec des :
.Add , , "", 0
ca marche parfaitement en tout cas.

Par contre, j'ai joué avec mes textbox de modifications.
Je voulais changer le fait que la textbox2 montre la colonne 2, la textbox 3 la colonne 3 etc...
J'ai reussi a faire les changements pour le mode affichage des infos, en rajoutante ce code dans MiseAjourTB :

Controls("TextBox" & 2) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(3)
Controls("TextBox" & 3) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(6)
Controls("TextBox" & 4) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(22)
Controls("TextBox" & 5) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(23)
Controls("TextBox" & 6) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(24)
Controls("TextBox" & 7) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(25)
Controls("TextBox" & 8) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(26)
Controls("TextBox" & 9) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(27)
Controls("TextBox" & 10) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(21)
Controls("TextBox" & 11) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(31)

Par contre, pour la procedure de modification, c'est du costaud.
Je suis dans la Private Sub CommandButton2_Click(), j'ai trouvé ou cela ce fait, mais ca bugg.

Comment faire pour que ma textbox 10 ecrive dans la colonne 27, la Textbox 9 dans la 21 etc...

Je cherche...

Merci pour ton aide precieuse en tout cas
 

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Salut aubelix,

Je viens d'aller voir sur ton fil et Romain t'a répondu.
Regarde et si problème j'y regarderai de plus près.

Bonnes fêtes de fin d'année.

A+
 

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Re,

Tu fais l'inverse :

Code:
.ListItems(ItemSelect).ListSubItems(27).Text = TextBox10

Comme rien ne se suit tu répètes la même chose pour chaque Textbox.

Vu que tu ne fais plus de boucle sur les Textbox tu n'es plus obligé de mettre
Code:
Controls("TextBox" & k + 1)

Tu passes directement par son nom TextBox10, TextBox8 .../...

A+
 

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

alors la, je comprends pas.
Je pensais avoir compris beaucoup de chose grace a toi et ce fichier, mais la...
J'ai changé tout le code, les textbox affichent bien les infos des colonnes specifiques

Controls("TextBox" & 3) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(6)
Controls("TextBox" & 4) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(22)
Controls("TextBox" & 5) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(23)
Controls("TextBox" & 6) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(24)
Controls("TextBox" & 7) = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(25)

etc...

J'ai bien changé l'ecriture egalement,

.ListItems(ItemSelect).ListSubItems(3).Text = TextBox2
.ListItems(ItemSelect).ListSubItems(6).Text = TextBox3
.ListItems(ItemSelect).ListSubItems(22).Text = TextBox4
etc...

et
Sheets("Data").Cells(Numlign, 2) = UCase(.ListItems(ItemSelect).ListSubItems(3).Text)
Sheets("Data").Cells(Numlign, 3) = UCase(.ListItems(ItemSelect).ListSubItems(6).Text)
Sheets("Data").Cells(Numlign, 4) = UCase(.ListItems(ItemSelect).ListSubItems(22).Text)

La fonction ecriture marche bien, ca semble ecrire dans les bonnes colonnes dans la listview ( ca se voit), mais ce n'est pas le cas dans la feuille du fichier excel...
qu'est ce qui bugge ?

Sinon, il y aurait-il une possibilité pour qu'une fois que je selectionne une ligne dans la listview, que je fasse une ecriture dans une textbox, que la ligne reste selectionnée dans la listview ?
En ce moment, un clique dans une textbox enleve le choix dans la listview.. du coup, on sait plus sur quelle ligne on travaille...

Merci pour ton aide
 

Pièces jointes

  • 123008 Fichier To post V6.zip
    33.6 KB · Affichages: 46
  • 123008 Fichier To post V6.zip
    33.6 KB · Affichages: 42
  • 123008 Fichier To post V6.zip
    33.6 KB · Affichages: 43

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Re,

Tes modifs sont bonnes, les données se mettent où il faut.
Par contre tu modifies des colonnes de la listeview et ensuite des cellules sur la feuille, mais ce ne sont pas les mêmes .

Pour que les données de la listview et des cellules soient les mêmes il faut faire la modif sur les deux.

Pour la sélection de la ligne supprime cette ligne dans la procédure d'initialisation du userform.
Code:
.ListItems(1).Selected = False

A+
 

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

Bonjour le forum
Bonjour pierre-olivier

et bonne année a tous.

Je reviens vers vous concernant mon fichier.
Tout marche, c'est nickel, sauf qu'a la vue des premiers tests avec mes utilisateurs, il s'avere que :
- Le choix des combo en cascade est utile quand on "creuse", quand on fait des tris, dans l'ordre ou sont présentés les informations. Un tri sur la colonne 1 (combo 1) puis sur la 2, puis sur la 3 etc... on écrème, et c'est nickel.

- Par contre, des utilisateurs ont besoin de faire, ce que j'appelle une recherche inversée. Ils connaissent le resultat final, ce qu'il recherche, ils ont donc besoin de faire une selection dans la colonne 6, donc dans la combo 6 (par exemple "Z").
La combo 3 affiche alors les possibilitées descoulants du choix "Z" dans la combo 6 (c'est le tri en cascade), et affiche alors comme choix G, H ou I.
Or, mes utilisateurs voudraient que, apres avoir choisi Z en combo 6, et par exemple H en combo 3, la listview n'affiche pas les resultats de : Z en 6 et H en 3, mais tous les resultats de H en 3.
On est plus alors dans une configuration en cascade quand on prend cette ordre.
Ils savent ce qu'il recherche mais veulent avoir tous les resultats qui ont la meme appartenance que leur Z en combo 6.

Alors pouquoi passer par un choix en combo 6 (Z) puis apres vouloir tout voir en faisant un choix en 3 (Tous les H), et pas directement faire un choix de H en combo 3 ? et bien parce que, le fichier réel comporte beaucoup d'info, et c'est en selectionnant en combo 6, qui est un sous produit, que mon utilisateur sait dans quel produit il est (en regardant les choix de la combo 3), ca, c'est le tri qui permet de savoir ca.
Et au final, ce qui l'interesse, c'est toute la decomposition de ce produit (Tout ce qui est dans H) et non pas le seul et unique sous produit Z de H
...

compliqué, j'avoue.

Alors, en conclusion, qui a une idée pour avoir des combo en cascade quand le choix se fait par 1 puis 2, puis 3... et non en cascade quand le choix se fait dans l'ordre inverse ?

Merci d'avance !
 

Pièces jointes

  • 123008 Fichier To post V6.zip
    35 KB · Affichages: 38
  • 123008 Fichier To post V6.zip
    35 KB · Affichages: 37
  • 123008 Fichier To post V6.zip
    35 KB · Affichages: 42

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Bonjour woodfoot, bonne année

J'ai ajouter 1 frame et deux Combobox : Cbx7 et Cbx8.

Lorsque tu clicks sur le Cbx7 cela filtre la listview comme avant et le Cbx8 se rempli avec les données de la colonne 3 de la listview aussi comme avant.

Ce qui change c'est quand tu click sur le Cbx8 cela efface la listview et la recharge avec tous les résultats en fonction du choix du Cbx8.

Le bouton de réinitialisation prend en compte les Cbx7 et 8.

A+
 

Pièces jointes

  • Listview Fichier To post V5.zip
    43.3 KB · Affichages: 58

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

Merci beaucoup pierre-olivier.

Ceci permet a mes utilisateurs de faire plusieurs tri possible.
Cela rajoute une frame (le faire avec les combos du dessus n'etait pas possible ?), mais en tout cas, ca reponds a ma demande.

Par contre, j'ai un autre soucis.
dans mon fichier, l'utilisateur rempli 2 textbox (la 5 et la 7) avec des infos sous forme de chiffre ou sous forme de texte.
C'est un prix, donc soit on le remplir sous forme "2.3", ce qui grace a ta fonction "remplace le "." en "," ecrit : 2,3.
Ou soit : En cours/ pas recu/relancer etc...

Le probleme, c'est que dans la feuille, cette info, qu'elle soit en chiffre ou en texte, est stockée sous format texte.
Or, je fais une formule a partir de cette colonne (c'est un prix, on calcule la marge etc...), et donc cette formule marche plus quand c'est du texte.

Alors, dans userform_initialize, j'ai bien mis :
.ListItems(.ListItems.Count).ListSubItems.Add , , Format(Sheets("Data").Cells(i, 5), "# ##0.00")

.ListItems(.ListItems.Count).ListSubItems.Add , , Format(Sheets("Data").Cells(i, 7), "# ##0.00")
Ce qui apparait dans ma textbox est donc bien dans ce format.

et dans le bouton de validation j'ai mis :
(par rapport a ton fichier j'ai juste changé la colonne dans laquelle la textbox ecrit sur la feuille)
Sheets("Data").Cells(Numlign, 24) = .ListItems(ItemSelect).ListSubItems(23)
Sheets("Data").Cells(Numlign, 26) = .ListItems(ItemSelect).ListSubItems(25)
au lieu des :
Sheets("Data").Cells(Numlign, 24) = UCase(.ListItems(ItemSelect).ListSubItems(23).Text)


Alors je pense que c'est la que ca coince.
J'ai tenté de mettre :
Sheets("Data").Cells(Numlign, 24) = Val(.ListItems(ItemSelect).ListSubItems(23))
et
Sheets("Data").Cells(Numlign, 26) = Val(.ListItems(ItemSelect).ListSubItems(25))

Mais dans ce cas la, ca stock bien en chiffre, mais mon "2,3" devient seulement "2".
Je perds mes decimales ! et quand je tape du texte, ca me mets un 0
J'ai donc du chiffre, mais pas tout, et pas de texte !

et j'en perds mon latin !!
il y a pas quelque chose a faire avec Dbl ?

que faire ? c'est dans cette partie du code qu'il faut faire la modif ?
''MiseEnForme
.ListItems(ItemSelect).Selected = False
For x = 2 To 11
Controls("TextBox" & x) = ""

Je comprends pas dans ton fichier tout s'ecrit automatiquement en nombre, qu'est ce que j'ai pu faire ?
 

woodfoot

XLDnaute Nouveau
Re : Formulaire combobox multiple et somme de listview

Re bonjour.

A la limite, si cela est trop compliqué, il faudrait trouver une macro qui permette de faire un "convert to number".
quand l'ecriture se fait en texte, et que je clique sur le petit triangle vert de la cellule, et que je clique sur convert to number, mon "2,3" stocké en texte devient un "2,3 en nombre, et ma formule remarche...

Mais l'enregistreur de macro marche pas pour ca !!

Merci d'avance
 

bqtr

XLDnaute Accro
Re : Formulaire combobox multiple et somme de listview

Re,

La frame n'est pas obligatoire c'est juste pour la mise en forme et aussi parce que les Combobox ne font pas la même chose que ceux du dessus. A mon sens il vaut mieux les séparer, mais tu sais bien les gouts et les couleurs ....

Pour le problème de format je ne comprends pas trop, tu dis que la formule me marche plus si tu as du texte dans la cellule or tu y mets du texte (En Cours, Reçu...).

Il faut, je pense modifier la formule en testant le contenu de la cellule : Si Texte alors ... Si Numérique alors... mais les formules c'est pas mon truc

Peux tu mettre la formule ? Si elle est pas trop compliquée je pourrai peut-être y arriver.

A+
 

Discussions similaires

Réponses
3
Affichages
597
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…