Sumifs userform VBA

Bonsoir

J'ai une question sur le code que je veux remplacer la valeur de 2018 par textbox3 mais elle n'a pas été définie avec moi la valeur vient dans textbox1 zéro

Private Sub UserForm_Initialize()
ur = Range("A" & Rows.Count).End(xlUp).Row
Me.TextBox1 = Evaluate("sumifs(B2:B" & ur & ",A2:A" & ur & ",2018,C2:C" & ur & ",""SI"")")
End Sub

par exemple

Private Sub UserForm_Initialize()
ur = Range("A" & Rows.Count).End(xlUp).Row
Me.TextBox1 = Evaluate("sumifs(B2:B" & ur & ",A2:A" & ur & ",Me.TextBox3,C2:C" & ur & ",""SI"")")
End Sub

Bonjour Mody,

Que contient TextBox3 à l'initialisation de l'USF

Sinon pour le code, il est bien de passer par une variable de type String

ur = Range("A" & Rows.Count).End(xlUp).Row
sForm = "sumifs(B2:B" & ur & ",A2:A" & ur & "," & Me.TextBox3 & ",C2:C" & ur & ",""SI"")"
Debug.Print sForm
Me.TextBox1 = Evaluate(sForm)

A+

Bonsoir

Merci, je l'ai résolu grâce à ce merveilleux code

Puis-je ajouter un autre paramètre combobox1 "f:f"

Par exemple, j'ai essayé d'y ajouter un autre critère, mais il n'a pas répondu

ur = Range("A" & Rows.Count).End(xlUp).Row

sForm = "sumifs(B2:B" & ur & ",A2:A" & ur & "," & Me.TextBox3 & ",f2:f" & ur & "," & Me.combobox1 & ",C2:C" & ur & ",""SI"")"

Debug.Print sForm

Me.TextBox1 = Evaluate(sForm)

Re,

Si je posais la question, c'est que je pense qu'il manquait mes guillemets CHR(34) dans le précédent code

A voir avec celui-là en plus de la Combox1

  Dim sForm As String, Ur As Long
  Ur = Range("A" & Rows.Count).End(xlUp).Row
  sForm = "sumifs(B2:B" & Ur & ",A2:A" & Ur & "," & Chr(34) & Me.TextBox3.Value & Chr(34) _
    & ",F2:F" & Ur & "," & Chr(34) & Me.ComboBox1.Value & Chr(34) & ",C2:C" & Ur & ",""SI"")"
  Debug.Print sForm

A+

Bonsoir Bruno M45

Bien joué

C'est ce que je veux

chouette code

Je vous souhaite le succès

Bonjour

Quel est le problème avec ce code dans la zone de textbox14 Le résultat de la valeur est juste la valeur de la feuille 2 de ("facture de vente") sans la soustraire de la feuille 1 ("reçu") Notez cette équation sumifs soustraire la feuille 1 ("Encaissement") de la feuille 2 de ("Facture de vente")

Private Sub test2()
'ThisWorkbook.Activate
Sheet1.Activate
Dim sForm As String, sForm1 As String, Ur, Ur1 As Long
'totRows = Worksheets("Bd").Range("A1").CurrentRegion.Rows.Count
Ur = Sheet1.Range("b" & Rows.Count).End(xlUp).Row
sForm = "sumifs(f2:f" & Ur & ",b2:b" & Ur & "," & Chr(34) & Me.TextBox1.Value & chr(34) _
& ",r2:r" & Ur & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur & ",""Cashing"")"
Sheet2.Activate
Ur1 = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
sForm1 = "sumifs(f2:f" & Ur1 & ",b2:b" & Ur1 & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur1 & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur1 & ",""sale invoice"")"
Me.TextBox14.Value = Evaluate(sForm1) - Evaluate(sForm)
End Sub

Edit modo : code entre balises SVP

Bonjour Mody

1) merci de mettre le code donné entre balises SVP

2) Vous pouvez utiliser "Debug.Print sForm" dans votre code pour savoir ce que contient votre variable

A+

Private Sub test2()
'ThisWorkbook.Activate
Sheet1.Activate
Dim sForm As String, sForm1 As String, Ur, Ur1 As Long
'totRows = Worksheets("Bd").Range("A1").CurrentRegion.Rows.Count
Ur = Sheet1.Range("b" & Rows.Count).End(xlUp).Row
sForm = "sumifs(f2:f" & Ur & ",b2:b" & Ur & "," & Chr(34) & Me.TextBox1.Value & chr(34) _
& ",r2:r" & Ur & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur & ",""Cashing"")"
Sheet2.Activate
Ur1 = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
sForm1 = "sumifs(f2:f" & Ur1 & ",b2:b" & Ur1 & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur1 & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur1 & ",""sale invoice"")"
Me.TextBox14.Value = Evaluate(sForm1) - Evaluate(sForm)
Debug.Print sForm ,sForm1
End Sub
Bonjour BrunoM45
Je mets le code "Debug.Print sForm" et le résultat est le même
Le problème vient de ce code

Sheet1.Activate
Ur = Sheet1.Range("b" & Rows.Count).End(xlUp).Row
Sheet2.Activate
Ur1 = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
Récupère la sortie dans textbox14 uniquement en fonction du dernier événement
Ur1 = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
sForm1 = "sumifs(f2:f" & Ur1 & ",b2:b" & Ur1 & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur1 & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur1 & ",""sale invoice"")"
Me.TextBox14.Value = Evaluate(sForm1) - Evaluate(sForm)
Private Sub test()
Dim sForm As String, sForm1 As String, Ur As Long
Dim ws As Worksheet

Application.ScreenUpdating = False

Set ws = Sheets("Cashing")
Ur = Sheet4.Range("b" & Rows.Count).End(xlUp).Row
sForm = "sumifs(f2:f" & Ur & ",b2:b" & Ur & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur & ",""Cashing"")"

Set ws = Sheets("sale invoice")
Ur = Sheet12.Range("b" & Rows.Count).End(xlUp).Row
sForm1 = "sumifs(f2:f" & Ur & ",b2:b" & Ur & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur & ",""sale invoice"")"
Debug.Print sForm, sForm1
Me.TextBox14.Value = Evaluate(sForm1) - Evaluate(sForm)

Application.ScreenUpdating = True
End Sub
4stock.xlsm (161.86 Ko)
Bonjour BrunoM45
Je mets le code "Debug.Print sForm" et le résultat est le même
Le problème vient de ce code

Set ws = Sheets("Cashing")
Ur = Sheet4.Range("b" & Rows.Count).End(xlUp).Row
Set ws = Sheets("sale invoice")
Ur1 = Sheet12.Range("b" & Rows.Count).End(xlUp).Row

Récupère la sortie dans textbox14 uniquement en fonction du dernier événement

Set ws = Sheets("sale invoice")
Ur = Sheet12.Range("b" & Rows.Count).End(xlUp).Row
sForm1 = "sumifs(f2:f" & Ur & ",b2:b" & Ur & "," & Chr(34) & Me.TextBox1.Value & Chr(34) _
& ",r2:r" & Ur & "," & Chr(34) & Me.ComboBox2.Value & Chr(34) & ",s2:s" & Ur & ",""sale invoice"")"
Debug.Print sForm, sForm1
Me.TextBox14.Value = Evaluate(sForm1) - Evaluate(sForm)

Application.ScreenUpdating = True
Rechercher des sujets similaires à "sumifs userform vba"