code vba

soname

XLDnaute Nouveau
bonjour tout le monde j'espere vraiment avoirs de l'aide de votre parts

voila j'ai un classeur avec 2 feuils la (1) mouvement ) et la (2)détail sortie annuel) avec un SpinButton qui me permit de basculer d'une année a une autre a fin de me calcule et d'afficher le détail des sorties de tout les mois de l'année sélectionne

voila le code utiliser il fonction très bien

Private Sub SpinButton1_Change()

myyear = Range("C1")
If myyear = "" Then Exit Sub

Range("A1") = Choose(myyear, "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026 ")
Range("A1:M1").Select
col = Choose(myyear, 33, 34, 35, 36, 37, 38, 39, 40, 24, 19, 42, 44)
Selection.Interior.ColorIndex = col
Range("A3:M2000").ClearContents
With Sheets("Mouvement")
For Mois = 1 To 12
For Ln = 7 To .Range("B" & Rows.Count).End(xlUp).Row

If Month(.Range("C" & Ln)) = Mois And Year(.Range("C" & Ln)) = Range("A1") Then
If .Range("B" & Ln) = "Sortie" Then
M = Month(.Range("C" & Ln))
Set cell = Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(.Range("F" & Ln), lookat:=xlWhole)
If Not cell Is Nothing Then
lgn = cell.Row
Else
lgn = Range("A" & Rows.Count).End(xlUp)(2).Row
End If
Range("A" & lgn) = .Range("F" & Ln)
Cells(lgn, M + 1).Value = Cells(lgn, M + 1).Value + .Range("G" & Ln)
End If
End If
Next Ln
Next Mois
End With
End Sub
ma Question y a t'il moyen de reproduire le code sur un userform avec une combobox remplie de tout les mois et une listbox qui va afficher les détail des sorties de tout les mois de l'année. je vous joins le classeur et merci
 

Pièces jointes

  • annuel.xlsm
    76.1 KB · Affichages: 15

cp4

XLDnaute Barbatruc
Bonjour,

un essai à tester. Code à mettre dans le formulaire.
VB:
Dim F As Worksheet, d As Object, a
Private Sub UserForm_Initialize()
   Set F = ThisWorkbook.Worksheets("Mouvement")
   Set d = CreateObject("Scripting.Dictionary")
   a = F.Range("B7:O" & F.[B65000].End(xlUp).Row)     ' tableau a(n,1) pour rapidité
   For i = LBound(a) To UBound(a)
      If a(i, 2) <> "" Then
         If Not d.exists(Month(a(i, 2))) = "" Then d(Month(a(i, 2))) = ""
      End If
   Next i
   Me.ComboBox1.List = d.keys
End Sub
Private Sub ComboBox1_click()
   ListBox1.ColumnCount = 14
   clé = Me.ComboBox1: n = 0
   Dim Tbl()
   For i = 1 To UBound(a)
      If Month(a(i, 2)) Like clé Then
         n = n + 1
         ReDim Preserve Tbl(1 To UBound(a, 2), 1 To n)
         For k = 1 To UBound(a, 2)
            Tbl(k, n) = a(i, k)
         Next k
      End If
   Next i
   If n > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
End Sub
 

soname

XLDnaute Nouveau
salut Cp4 merci pour ton aide

avant tout je voudrais m'excuse peut être que j'ai mal exposé mon problème
le code que vous m'avais fournir il serre uniquement a filtre les mouvement par mois et se n'est pas l'objectif du code que j'ai poster voila le fonctionnement de mon code sur la feuil (2) annuel):


quand je change l'année avec SpinButton ex: 2015 il va me calculer tt les sortie de chaque mois de l’année sélectionné ex: j'ai 2 sortie de la farine en vrac le mois de Février avec 2 dates différente (1)=55kg (2) = 200kg alors le résultat est de 255kg et la même chose pour les autre mois, la feuil (2) détail sortie annuel) s'affiche de cet manier


Désignation...........Janvier.....Février...Mars.....Avril.......Mai.....Juin..........
farine en vrac .........................255.......255......................55
Tomate fraiche...........................55........255

Ma question Est-ce que on peut reproduire le même fonctionnement de ce code sur un userform doté d’une combobox et une listbox.

Je vous joins mon classeur pour bien voir le fonctionnement du code



merci
 

Pièces jointes

  • annuel.xlsm
    74.6 KB · Affichages: 17

cp4

XLDnaute Barbatruc
Bonsoir
Oui c'est faisable , il faut transposer ton code Spin dans celui de la combo et le resultat au lieu de la feuille dans la listbox !!!, suivre en "pas à pas" (mode debug) pour ajuster au cas ou !
je ne poursuis pas car CP4 dans sa lancée va te concocter le tout .....
Bonsoir Herve62:),

Tu viens de me jeter des fleurs, accompagnées du vase ou du pot?:p
Tu surestimes mes compétences. j'arriverai à récupérer les données à partir de la feuille Mouvement dans la lisbox.
Mais reproduire à l'identique de la feuille annuel dans la listbox. Non, je n'ai pas encore atteint ce niveau.
Je te passe la main volontiers.

Bon week-end.;)
 

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi