Alimentation ListBox Multi Critéres

Bonjour,

Je planche sur le sujet suivant.

J'ai un userform qui contient plusieurs textbox. Ce dernier servant à la gestion du stock de la billetterie de mon CE. Une partie des informations est saisie, l'autre va provenir de deux listes.

image

Le thème permet de déterminer le choix de l'activité prévue

L'activité est le 1° indicateur de choix

La date d'inventaire est par défaut la date du jour

La date du stock initial est la date du dernier inventaire réalisé sur l'activité donnée (Colonne C onglet Stock)

Stock Initial est le stock de l'activité sur cette date (Colonne G onglet Stock)

Les ventes sont les ventes cumulées entre les deux périodes (Stock initial et Date inventaire) pour l'activité (Colonne D onglet Base de données)

Les textbox Achat et Correction de stock sont en saisie

Et pour finir le stock final se calcule (c'est ce que j'ai fait au début mais bon ce n'est pas grand chose :-) )

Donc l'exercice n'est pas simple, je vais essayer d'avancer dessus et alimenter le forum de mes avancées.

Mais si vous avez des idées je suis preneur.

Cordialement

Xavier

Bonjour,

J'ai un souci avec cette macro :

TextBox_Date_Si = Application.WorksheetFunction.Lookup(ComboBox_Sto_A, Sheets("STOCK"), Range("A:C"), 3, False)

et je reçois le message suivant

image

et je n'arrive pas à trouver mon erreur, si l'un ou l'une d'entre vous a les yeux mieux placés que moi.

Merci d'avance.

Cordialement.

Bonjour

Ce n'est pas VLookUp ? Mais je dois me tromper

@ bientôt

LouReeD

Bonjour LouReed,

Oui c'est ça mais je ne comprends pas pourquoi.

Cordialement.

Hello,

Comme promis je vous informe des avancées.

Donc voici la macro, qui permet de trouver la date du dernier inventaire et du dernier stock:

Private Sub ComboBox_Sto_A_Change()

Dim DL%, i%, nom$, t
DL = Sheets("STOCK").Range("B65500").End(xlUp).Row
activite = ComboBox_Sto_A.Value
TextBox_Date_Si = ""
TextBox_Si = ""
t = Sheets("STOCK").Range("A2:h" & DL)
For i = LBound(t) To UBound(t)
If t(i, 1) = activite Then
TextBox_Date_Si = t(i, 3)
TextBox_Si = t(i, 7)
End If
Next i
On Error Resume Next


End Sub

Il me reste à trouver la solution pour faire une recherche entre deux dates pour une activité donnée.

Si quelqu'un a des idées.

Cordialement.

Hello,

Je reprends un peu le cours de mes recherches. Comme dit dans le post précédent. Je cherche à trouver une solution pour traiter le problème suivant :

Il faudrait que suivant l'activité (dans l'exemple CINECHEQUE) et entre les dates bornées de la façon suivante (écart entre < Date Stock Initial et >= date inventaire ) remonte la donnée dans vente. Dis autrement les ventes cumulées sur la période choisie qui se trouve stockées dans une feuille de classeur.

image

Si je trouve une solution comme précédemment je publierai le résultat.

Cordialement.

Xavier

Toujours dans la continuité de mon projet,

J'ai trouvé comment faire la somme dont voici le code:

'Recherche des ventes sur les deux critéres borne de date et activité

Dim MaPlage As Range
Dim MaSomme As Single
Set MaPlage = Sheets("BASEDEDONNEES").Range("d:d")

MaSomme = Application.WorksheetFunction.Sum(MaPlage)
TextBox_Vente = MaSomme

Il ne me reste plus qu'à le rendre variable entre les bornes de date et l'activité choisie.

Donc toujours pareil si vous avez des idées

Cordialement.

Bonsoir,

si je comprend bien vous n'avez plus l'erreur avec VLookUp ? Et vous demandez pourquoi ? Car le V correspond à vertical est cette instruction correspond à celle d'une feuille Excel : RechercheV; sans le V c'est RECHERCHE seul, hors avec les arguments que vous avez mis en place entre les parenthèse cela correspond à un RECHERCHEV.

@ bientôt

LouReeD

Bonsoir LouReed,

Oui c'est bon j'ai trouvé une autre solution.

En revanche j'ai un autre souci que je n'arrive pas à encore réglé.

J'ai cette macro :

MaSomme = Application.WorksheetFunction.SumIfs(MaPlage2, MaPlage, ComboBox_Sto_A, MaPlage3, "<TextBox_Sto_Si")

Le problème que je rencontre est le suivant, je n'arrive pas à trouver le bon format pour que le résultat de la TextBox soit bien en format date. Du coup le résultat ne fonctionne pas.

En cas d'idée, je suis preneur.

Cordialement.

Xavier

Bonsoir,

avez vous un fichier actualisé ? Car sur le premier je ne trouve même pas la partie de code annoncé qui posait problème

@ bientôt

LouReeD

Bonjour,

Oui effectivement, je n'avais pas remis à jour le fichier test.

Le voici

Cordialement.

Je viens de modifier le fichier, en fait ce qui ne fonctionne pas c'est la macro ci-dessous:

MaSomme2 = Application.WorksheetFunction.SumIfs(MaPlage2, MaPlage3, (">TextBox_Date_Si"))

TextBox_Vente = MaSomme2

J'ai essayé de le faire précéder de CDate

MaSomme2 = Application.WorksheetFunction.SumIfs(MaPlage2, MaPlage3, CDate (">TextBox_Date_Si"))

mais j'ai toujours un résultat à 0.

et je ne comprends pas pourquoi.

Cordialement.

Bonjour,

Comme promis voici la macro complète, si elle peut servir.

Cordialement.

Private Sub ComboBox_Sto_A_Change()
'Mise à jour de la date dernier inventaire et stock initial dans le US_Sto

Dim DL%, i%, nom$, t
DL = Sheets("STOCK").Range("B65500").End(xlUp).Row
activite = ComboBox_Sto_A.Value
TextBox_Date_Si = ""
TextBox_Si = ""
t = Sheets("STOCK").Range("A2:h" & DL)
For i = LBound(t) To UBound(t)
If t(i, 1) = activite Then
TextBox_Date_Si = t(i, 3)
TextBox_Si = t(i, 7)
End If
Next i
On Error Resume Next

Dim MaPlage As Range
Dim MaPlage2 As Range
Dim MaPlage3 As Range

Dim MaSomme As Single
Dim MaSomme2 As Single

Set MaPlage = Sheets("BASEDEDONNEES").Range("c:c")
Set MaPlage2 = Sheets("BASEDEDONNEES").Range("d:d")
Set MaPlage3 = Sheets("BASEDEDONNEES").Range("f:f")

MaSomme = Application.WorksheetFunction.SumIfs(MaPlage2, MaPlage, ComboBox_Sto_A, MaPlage3, ">" & Format(TextBox_Date_Si, "mm/dd/yyyy"))
'MaSomme2 = Application.WorksheetFunction.SumIfs(MaPlage2, MaPlage3, ">" & Format(TextBox_Date_Si, "mm/dd/yyyy"))

TextBox_Vente = MaSomme


End Sub

Private Sub CommandButton_Calcul_Click()

On Error Resume Next
TextBox_St_F.Value = (CDbl(TextBox_Si.Value) - CDbl(TextBox_Vente.Value) + CDbl(TextBox_Ach.Value) + CDbl(TextBox_Cor.Value))

End Sub

Private Sub CommandButton_Out_Click()

Dim fin As Integer
fin = MsgBox("Avez vous finaliser la validation des stocks ?", vbYesNo, "VALIDATION STOCK!")
If fin = vbOK Then
End If
Unload UserForm_Sto

End Sub
Private Sub CommandButton_Val_Sto_Click()

Dim ok As Integer
ok = MsgBox("Validez vous le nouveau stock ?", vbYesNo, "VALIDATION STOCK!")

If ok = vbNo Then
Exit Sub
End If

If ok = vbYes Then

derligne = Sheets("STOCK").Range("a456541").End(xlUp).Row + 1
Sheets("STOCK").Cells(derligne, 1) = ComboBox_Sto_A
Sheets("STOCK").Cells(derligne, 2) = CCur(TextBox_Si)
Sheets("STOCK").Cells(derligne, 3) = CDate(Date)
Sheets("STOCK").Cells(derligne, 4) = CCur(TextBox_Vente)
Sheets("STOCK").Cells(derligne, 5) = CCur(TextBox_Ach)
Sheets("STOCK").Cells(derligne, 6) = CCur(TextBox_Cor)
Sheets("STOCK").Cells(derligne, 7) = CCur(TextBox_St_F)
Sheets("STOCK").Cells(derligne, 8) = TextBox_Com

Me.TextBox_Ach = 0
Me.TextBox_Cor = 0
Me.TextBox_Vente = 0
Me.TextBox_St_F = 0
Me.TextBox_Si = 0
Me.ComboBox_Sto_A = ""
Me.ComboBox_Sto_T = ""
Me.TextBox_Com = ""

End If

End Sub

Private Sub UserForm_Initialize()

ComboBox_Sto_T.Column = Range("tb_liste[#Headers]").Value
Me.TextBoX_Date_St = Date
Me.TextBox_Ach = 0
Me.TextBox_Cor = 0

UserForm_Sto.Height = 500
UserForm_Sto.Width = 980

End Sub
Private Sub ComboBox_Sto_T_Change()

Change ComboBox_Sto_T, ComboBox_Sto_A, "tb_liste"

End Sub
Public Sub Change(CbSource As MSForms.ComboBox, CbDest As MSForms.ComboBox, nomTablo As String)

If CbSource.Value <> vbNullString Then
With CbDest
.Clear
.List = getArrayFromRange(Range(nomTablo & "[" & CbSource.Value & "]"))

End With
End If
End Sub
Private Function getArrayFromRange(Item As Range)

If WorksheetFunction.CountA(Item) > 0 Then
If Item.Cells.Count = 1 Then
Dim t(1, 1)
t(1, 1) = Item.Value
getArrayFromRange = t
Else
getArrayFromRange = Item.SpecialCells(xlCellTypeConstants).Value
End If
Else
getArrayFromRange = Array(vbNullString)
End If
End Function

Rechercher des sujets similaires à "alimentation listbox multi criteres"