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
De rien René, c'était la moindre des choses.

Ecoute, le dernier code que tu as mis, modifie la première ligne de commande et ensuite plus rien. Est-ce que avec Match, il y aurait moyen de modifier les doublons? À moins que je dise n'importe quoi.
 

Bebere

XLDnaute Barbatruc
bonjour Dodo,le forum
dans une commande tu n'auras pas 2 articles les mêmes
je pense qu'il faut rechercher l'article de la listview ,celui de la combobox peut être changé
je dois m'absenter,je ferai un code plus complet.Il y a moyen de simplifier en employant la propriété key de listview
en plus le code est plus sûr.Déjà mis un exemple dans une réponse précédente

Code:
    If Li = 0 Then MsgBox "votre sélection listview,svp": Exit Sub
    If MsgBox("Voulez-vous modifier cet enregistrement ?", vbYesNo, _
              "LES MILLES MERVEILLES") <> vbYes Then Exit Sub

    Total = CDbl(TxtPrix) * CDbl(TxtQte)
    'Montant = Total - Dif
    'Pourcent = Val(CmbRabais) / 100
    Dif = Total * (Val(CmbRabais) / 100)    'Pourcent
    Montant = Total - Dif

    With WsDC
        Set Rng = .Range("c2:c65536")
       
    End With

For Each cel In Rng
            If cel = Val(CmbCommandes) Then
                If cel.Offset(0, 1) = Me.ListView1.ListItems(Li).ListSubItems(2) Then
                    Ligne = cel.Row: Exit For
                End If
            End If
        Next cel

    Rng.Cells(Ligne, 4) = CmbArticles
    Rng.Cells(Ligne, 5) = Format(TxtQte, "0")
    Rng.Cells(Ligne, 6) = Format(TxtPrix, "0.00")
    Rng.Cells(Ligne, 7) = Format(Val(CmbRabais) / 100, "0%")
    Rng.Cells(Ligne, 8) = Format(TxtDif, "0.00")
    Rng.Cells(Ligne, 9) = Format(TxtMontant, "0.00")
 

Lone-wolf

XLDnaute Barbatruc
Bonjour René

il faut modifier la ligne: If Li = 0 Then MsgBox "votre sélection listview,svp": Exit Sub, elle ne prend pas en compte que j'ai déjà sélectionné l'Item.

Et erreur Incompatibilité de Type sur la ligne
cel.Offset(0, 1) = Me.ListView1.ListItems(Li).ListSubItems(2)
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Maintenant j'ai l'erreur Index out of bound sur la ligne: Me.ListView1.ListItems(Li).ListSubItems(2)
Pour .ListSubItems(2), ce n'est pas plutôt .ListSubItems(1)

With ListView1
Li = item.Index
CmbArticles = .SelectedItem.SubItems(1)

Et les données(peut-être à cause de Rng) sont décalées en colonne F.
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re René

J'ai modifié la macro comme ceci

VB:
   If MsgBox("Voulez-vous modifier cet enregistrement ?", vbYesNo, _
              "LES MILLES MERVEILLES") <> vbYes Then Exit Sub

    Total = CDbl(TxtPrix) * CDbl(TxtQte)
    Dif = Total * (Val(CmbRabais) / 100)    'Pourcent
    Montant = Total - Dif

    With WsDC
        Set Rng = .Range("c2:c65536")

For Each cel In Rng
            If cel = Val(CmbCommandes) Then
                If cel.Offset(0, 1) = CmbArticles.Text Then
                    ligne = cel.Row: Exit For
                End If
            End If
        Next cel

    .Range("d" & ligne) = CmbArticles
    .Range("e" & ligne) = Format(TxtQte, "0")
    .Range("f" & ligne) = Format(TxtPrix, "0.00")
    .Range("g" & ligne) = Format(Val(CmbRabais) / 100, "0%")
    .Range("h" & ligne) = Format(TxtDif, "0.00")
    .Range("i" & ligne) = Format(TxtMontant, "0.00")
    End With

Puis éffectué les changement sur 2 commandes; c'est un peu lent, mais tout se passe bien.
 

grisan29

XLDnaute Accro
bonjour Lone-wolf, bebere et le forum
la je n'ai rien fait sur le dernier classeur mis en ligne page, mais je le rejoint car il sera plus facile de retrouver la partie du code a modifier car je l'ai indenté au complet et du coup est devenu plus lisible mais pas intégré les dernière modifications présentées
 

Pièces jointes

  • Les Milles Merveilles1 (2).zip
    287.8 KB · Affichages: 73

Lone-wolf

XLDnaute Barbatruc
Bonsoir Pascal,

j'ai pas compris du tout, ce que tu veux dire par là et pourquoi avoir mis le fichier alors?

En PJ, la nouvelle version. Attention! Après avoir pris une commande, clique sur Facture pour ajouter les données dans la feuille Sauvegarde.
 

Pièces jointes

  • Les Milles Merveilles.zip
    914.3 KB · Affichages: 63

grisan29

XLDnaute Accro
bonjour lone-wolf
je doute qu'après 3523 messages tu ne sache ce que veux dire indenté un code enfin
voici un exemple issu du module "macros_montants " du fichier que tu viens de joindre
Code:
Public Sub MontantFacture()
Dim tbl, i As Long, MonDico As Object, mondico1 As Object 'dictionary
Dim derlig&, x&, ard

Set MonDico = CreateObject("Scripting.Dictionary")
Set mondico1 = CreateObject("Scripting.Dictionary")

With WsDC
tbl = .Range("A2:I" & .Range("A65536").End(xlUp).Row)
End With

For i = 1 To UBound(tbl)
MonDico(tbl(i, 3)) = MonDico(tbl(i, 3)) + tbl(i, 9)
mondico1(tbl(i, 3)) = mondico1(tbl(i, 3)) + (tbl(i, 9) + tbl(i, 9) * 0.08)
Next i

With WsFact
.[H2].Resize(MonDico.Count, 1) = Application.Transpose(MonDico.Items)
.[j2].Resize(mondico1.Count, 1) = Application.Transpose(mondico1.Items)
.[H2].Resize(MonDico.Count, 1).NumberFormat = "0.00"
.[j2].Resize(MonDico.Count, 1).NumberFormat = "0.00"

derlig = .Range("j" & Rows.Count).End(xlUp).Row
For x = 2 To derlig
ard = Round(.Range("j" & x), 1)
.Range("j" & x) = ard
Next x
End With
End Sub
et voici le même indenter
Code:
Public Sub MontantFacture()
    Dim tbl, i As Long, MonDico As Object, mondico1 As Object 'dictionary
    Dim derlig&, x&, ard
  
    Set MonDico = CreateObject("Scripting.Dictionary")
    Set mondico1 = CreateObject("Scripting.Dictionary")
  
    With WsDC
        tbl = .Range("A2:I" & .Range("A65536").End(xlUp).Row)
    End With
  
    For i = 1 To UBound(tbl)
        MonDico(tbl(i, 3)) = MonDico(tbl(i, 3)) + tbl(i, 9)
        mondico1(tbl(i, 3)) = mondico1(tbl(i, 3)) + (tbl(i, 9) + tbl(i, 9) * 0.08)
    Next i
      
        With WsFact
            .[H2].Resize(MonDico.Count, 1) = Application.Transpose(MonDico.Items)
            .[j2].Resize(mondico1.Count, 1) = Application.Transpose(mondico1.Items)
            .[H2].Resize(MonDico.Count, 1).NumberFormat = "0.00"
            .[j2].Resize(MonDico.Count, 1).NumberFormat = "0.00"
          
            derlig = .Range("j" & Rows.Count).End(xlUp).Row
            For x = 2 To derlig
                ard = Round(.Range("j" & x), 1)
                .Range("j" & x) = ard
                Next x
            End With
        End Sub

vois tu la différence, car j'ai passer plus d'une heure a le faire
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Pascal

Je viens de faire un copier-coller du code sur le bloc-note et lit attentivement chaque ligne; sans vouloir t'offenser, je ne vois rien de changer.

En PJ, le nouveau fichier. J'ai dû recorriger le code du formulaire UsfCommandes à cause des variables contrôles qui étaient erronées et mit la macros d'éffacement des bulletins dans workbook_open du classeur Data.
 

Pièces jointes

  • Les Milles Merveilles.zip
    937.3 KB · Affichages: 75

Bebere

XLDnaute Barbatruc
bonjour Dodo,Grisan
modifier le code usfmodcommandes en partie,surtout le bouton modifier
pour les changements tout se passe dans la listview,tu peux en faire plusieurs
le contenu de la listview est mis dans un tableau b et b remis dans les 4 feuilles
 

Pièces jointes

  • Les Merveilles121016.zip
    1.7 MB · Affichages: 69

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86