XL 2010 [Résolu] Afficher résultats par dates dans Listview

Lone-wolf

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

En PJ et dans le formulaire UsfGestionES, j'aissaie d'afficher par dates les entrées et les sorties des différents articles. Je ne sais pas se qui se passe, la listview n'affiche aucuns résultas malgré une recherche avec Find.

J'ai aussi un souci concernant le format Date dans les Combobox's, elles affichent le format "dd/mm/yyyy" et moi j'aimerais qu'elles soient au format "dd.mm.yyyy". Les feuilles sont "Entrees" et "Sorties" du classeur Base qui se trouve dans le sous-dossier.

Merci d'avance pour l'aide que vous apporterez.
 

Pièces jointes

  • Les Milles Merveilles.zip
    1.8 MB · Affichages: 146

Lone-wolf

XLDnaute Barbatruc
Bonjour René :)

Bonne nouvelle, j'ai trouvé la solution. Voici le code

VB:
With WsDC
plg = .Range("c" & Rows.Count).End(xlDown).Row
Set plage = plg.Find(CmbCommandes, xlValues, xlWhole)
      For Each cel In plage
            If Not cel Is Nothing Then
    Set cel = cel.Offset(0, 1).Find(CmbArticles, xlValues, xlWhole)
                If cel.Offset(0, 1).Value = CmbArticles.Value Then
        ligne = cel.Offset(0, 1).Row
      End If
End If
    If MsgBox("Voulez-vous modifier cet enregistrement ?", vbYesNo, _
              "LES MILLES MERVEILLES") <> vbYes Then Exit Sub
      .Cells(ligne, 5) = Format(TxtQte, "0")
      .Cells(ligne, 6) = Format(TxtPrix, "0.00")
      .Cells(ligne, 7) = Format(Pourcent, "0%")
      .Cells(ligne, 8) = Format(TxtDif, "0.00")
      .Cells(ligne, 9) = Format(TxtMontant, "0.00")
      Exit For
    Next cel
        ligne = ligne + 1
  End With
 

Lone-wolf

XLDnaute Barbatruc
Bonjour René :)

En utilisant l'usf j'ai constaté trois anomalies. La première: l'affichage des commandes, la deuxième: quand j'ai selectionné Severine Robico, la listview affichait aussi les diverses dates, et la troisième les intitulés des colonnes de la listview, mieux vaut les faire manuellement.

Comme se n'est pas terrible, sans vouloir t'offenser, j'ai pensé aux listes en cascades. Au lieux d'avoir une textbox qui affiche le numéro de commande, il faudrait une 2ème combo qui récupère les autres numéros de commandes de la même personne; et avec celle-ci afficher les autres commandes.
 

grisan29

XLDnaute Accro
bonjour Bebère, Lone-wolf et le forum
j'ai ouvert le dernier fichier que Bebère:) a mis en ligne et je me trouve avec un bug quand je clic sur "commandes clients" et quand je choisi dans la combobox un réprésentant l'erreur vba s'ouvre sur une erreur de variable non défini a
Code:
 LbC.Caption = ""
a LbC et je ne vois pas de label a ce nom
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Pascal :)

Tu peux sans autre le supprimer, comme j'ai dû refaire le projet, j'ai oublié de l'enlever.
Correction du code de la listview1.

EDIT: Bonjour René :), je n'ai pas fait attention à ton message, sorry.


VB:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim ItemDtC As ListItem, ItemCCl As ListItem

WsFact.Range("a1:l65536").AutoFilter

  With WsDC.Range("c2:c65536")
  Set cel = .Find(Item.SubItems(1), , , xlWhole)
  If Not cel Is Nothing Then
  premaddress = cel.Address
  ListView2.ListItems.Clear
  Do
    Set ItemDtC = ListView2.ListItems.Add(Text:=cel.Offset(0, 0))
      ItemDtC.SubItems(1) = cel.Offset(0, 1)
      ItemDtC.SubItems(2) = cel.Offset(0, 2)
      ItemDtC.SubItems(3) = Format(cel.Offset(0, 3), "0.00.-")
      ItemDtC.SubItems(4) = Format(cel.Offset(0, 4) / 100, "0%")
      ItemDtC.SubItems(5) = Format(cel.Offset(0, 5), "0.00.-")
     ItemDtC.SubItems(6) = Format(cel.Offset(0, 6), "0.00.-")
Set cel = .FindNext(cel)
    Loop While Not cel Is Nothing And cel.Address <> premaddress
    End If

With WsFact.Range("b2:b65536")
  Set c = .Find(cel.Offset(0, 0), , xlValues)
  If Not c Is Nothing Then
  premaddress = cel.Address
  ListView3.ListItems.Clear
  Do
    Set ItemCCl = ListView3.ListItems.Add(Text:=c.Offset(0, 0))
      ItemCCl.SubItems(1) = c.Offset(0, 2)
      ItemCCl.SubItems(2) = Format(c.Offset(0, 8), "0.00.-")
      ItemCCl.SubItems(3) = c.Offset(0, 5)
    
      If Date = c.Offset(0, 9).Value Then
MsgBox "      Le versement à été éffectué." & vbCrLf & "Veuillez procéder à la mise à jour.", , "LES MILLES MERVEILLES"
c.Offset(0, 9).ClearContents
c.Offset(0, 5) = Format(Date, "dd.mm.yyyy")
Else
Exit Sub
End If
Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> premaddress
    End If
End With
End With

Call Maj
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re René, Pascal, le Forum

@ René: voilà qui est beaucoup mieux. Comme tu l'a pu constater, on vois maintenant à quel numéro de commande appartiennent les produits. Tank You So Much. ;)

Pendant que tu travaillait sur l'usf, j'en ai créé un nouveau (UsfEtats) et commencé une partie. En cliquant sur l'un des intitulés de la listview gauche, j'alimente la combo qui se trouve en dessous et en cliquant sur aperçus, on peut voir les montants pour les clients et les représentants ainsi que les produits vendus et es ventes par catégories. Dans la listview de droite pour l'instant on ne peut voir que les montants trimestriels, en cliquant sur le même intitulé, puis en sélectionnant les trimestres.

Pour completer le formulaire, il faudrait ajouter les macros des ventes mensuelles - trimestrielles et annuelles pour chaque intitulé de la listview à gauche et pour chaque noms de la combo.
 

Pièces jointes

  • Les Merveilles.zip
    672.5 KB · Affichages: 47

Lone-wolf

XLDnaute Barbatruc
Bonjour Pascal, le Forum :)

Je vais regarder cela, c'est bizarre??? o_O

Edit: comment tu fait pour prendre la commande?? Moi je n'ai pas ce souci. Il y a juste une correction à faire au bouton Quitter.

With WsC
k = .Range("b65536").End(xlUp).Row
If ComboBox1 = "" Or ComboBox3 = "" Then .Range("z1").Value = .Cells(k, 2).Value
End With


Moi j'ai un problème avec cette macro, pour copier les lignes filtrées.

VB:
Sub test()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Sorties")
derlig = .Range("b65536").End(xlUp).Row
date1 = DateSerial(2016, 9, 1)
article = .Range("c75").Value  'Peignoire adulte divers coloris
For i = derlig To 2 Step -1
  If Month(.Cells(i, 2).Value) <> Month(date1) And .Cells(i, 3).Value <> article Then
    Select Case .Cells(i, 3).Value
        Case "C", "D"
        Exit For
        Case Else
        .Rows(i).Hidden = True
    End Select
End If
Next i
End With
End Sub


Pour l'ensemble des aricles du même mois, c'est ok; mais pas avec l'exemple.
 
Dernière édition:

Bebere

XLDnaute Barbatruc
bonjour Dodo,Grisan
un exemple filtre élaboré,code module1
pour Grisan
je pense que c'est la variable wbBase le problème
Sub Init_Feuilles()
Dim Sh As Worksheet, lig%, k&
Set WbBase = Workbooks("Base.xlsm")'ligne à ajouter
 

Pièces jointes

  • FiltreElabore.xlsm
    20.3 KB · Affichages: 37

Lone-wolf

XLDnaute Barbatruc
Bonsoir René,

Encore une fois c'est peut-être un malentendu. Le fitre doit être appliqué d'après la combo des mois de l'usf Etats. J'ait fait une modification pour cette combo. D'abord j'ai inscrit sur la feuille comme ceci

VB:
With WsSort
For i = 1 To 12
.Range("u" & i + 1) = Format(CDate("01/" & i & "/" & UsfEtats.ComboBox1), "dd.mm.yyyy")
Next i
End With

Ensuite

VB:
With WsSort
derlig = .Range("u" & Rows.Count).End(xlUp).Row
For k = 2 To derlig
UsfEtats.ComboBox3.AddItem Format(.Range("u" & k), "mmmm")  'ComboBox Mois
Next k
End With

En Pj, le fichier à utiliser.

Attention! Ce n'est plus "Base" mais "Data" le classeur à ouvrir. Voir le module Initialisation_Classeur_Base et pour les variables "Variables_Public".
 

Pièces jointes

  • Les Milles Merveilles.zip
    352.9 KB · Affichages: 42
Dernière édition:

grisan29

XLDnaute Accro
bonsoir bebere et Lone-wolf
il n'y a pas de classeur "base" donc ca bug sur ta ligne de code
non c'est juste qand je clique sur le bouton il me demande si je veux inscrire une nouvelle commande , je clic sur oui et je passe a l'erreur 13 incompatibilité de type et l'appui sur f8 fait défilé jusque l'erreur qui est a l'une ou l'autre des lignes montview
Code:
DateCom = Format(Date, "dd.mm.yyyy")
Me.MonthView1 = DateCom
Me.MonthView1.Visible = False
DifMontant = Format(DifMontant, "0.00")
NumCom = WsC.Range("k1").Value

j'ai supprimer les montview et remis d'autres et le bug est le même
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088