Résolu:Remplacer fonction Somme.Si.Ens par une macro

Primatexcel

XLDnaute Junior
Bonjour à toutes et à tous,

Ma question est plutot simple.

Peut-on faire une macro pour un Userform qui aurait le meme resultat que la fonction "Somme.Si Ens." d'une feuille excel?

le but pour moi est de supprimer la fonction sur la feuille excel car j'en est beaucoup trop.

Merci de vos réponses
 
Dernière édition:

Regueiro

XLDnaute Impliqué
Re : Remplacer fonction Somme.Si.Ens par une macro

Bonjour.
Bien sûr que tu peux.
Pourrais-tu mettre un fichier en PJ.
Cela dépend de ta version Excel :

Exemple
Code:
Application.WorksheetFunction.SumIfs(Fl.Columns(8), Fl.Columns(1), cib1, Month(Fl.Cells(xndev, 6)), Month(Flech.Cells(3, colmois).Value))
Next

A+
 

Primatexcel

XLDnaute Junior
Re : Remplacer fonction Somme.Si.Ens par une macro

Bonjour Regueiro,

merci de ta participation a mon problème je te joins un fichier et n’hésite pas me questionner pour plus d'infos.
Une autre question me vient a l'esprit et dis moi si je dois ouvrir une autre discussion?

Comment peut-on faire pour copier le contenue de plusieurs textbox avec une seule macro sachant qu'a chaque insertion sur la feuille excel la valeur du combobox change

voir le fichier

a plus
 
Dernière édition:

Primatexcel

XLDnaute Junior
Re : Remplacer fonction Somme.Si.Ens par une macro

bonjour à toutes et a tous,
je reprends mon fil après plusieurs mois d'absence désolé.

mon problème est toujours le même avec quelques variantes je remercie tout de même Regueiro de son intervention et de sa proposition.

Je vous joins un fichier en espérant que quelqu'un pourra m'apporter une bonne idée (comme d'habitude).

Merci
 

Pièces jointes

  • Testforum.xlsm
    25.3 KB · Affichages: 95
  • Testforum.xlsm
    25.3 KB · Affichages: 79
  • Testforum.xlsm
    25.3 KB · Affichages: 81

Regueiro

XLDnaute Impliqué
Re : Remplacer fonction Somme.Si.Ens par une macro

Bonsoir Le Forum, PrimatExcel
Ton Fichier en Retour.
En Feuil2 chez insérer un tableau pour tes données
Explication :
Dans le USF pour remplir les Labels :
Code:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
With ListView1.SelectedItem
S = Me.ListView1.SelectedItem.Index
MsgBox S
Me.Label3.Caption = Sheets("Feuil1").Cells(4 + S, 3).Text
Me.Label4.Caption = Sheets("Feuil1").Cells(4 + S, 4).Text
End With
End Sub

Pour remplir les Formules lors de l'initialise de USF :

Code:
Private Sub UserForm_Initialize()
With Sheets("Feuil1")
Cells(5, 3).FormulaR1C1 = "=R[-2]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(5, 4).FormulaR1C1 = "=R[-2]C[-1]+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
Cells(6, 3).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(6, 4).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
Cells(7, 3).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(7, 4).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
Cells(8, 3).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(8, 4).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
Cells(9, 3).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(9, 4).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
'Tu désactive le code ci-dessous si tu veux voir les Formules
Range(Cells(5, 3), Cells(9, 4)).Value = Range(Cells(5, 3), Cells(9, 4)).Value
End With
With ListView1
With .ColumnHeaders '365
            .Clear
            .Add , , "Nombre", 55
        End With
        .View = lvwReport
        .FullRowSelect = True
        .Gridlines = True
End With

Remplir_ListView1 (M)

End Sub
Bonne soirée
A+
 

Pièces jointes

  • XLD-remplacer-fonction-somme-si-ens-par VBA.xlsm
    31.5 KB · Affichages: 185

Regueiro

XLDnaute Impliqué
Re : Remplacer fonction Somme.Si.Ens par une macro

Re
un plus court :
Code:
Private Sub UserForm_Initialize()
With Sheets("Feuil1")
Range(Cells(5, 3), Cells(9, 4)).ClearContents

Cells(5, 3).FormulaR1C1 = "=R[-2]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(5, 4).FormulaR1C1 = "=R[-2]C[-1]+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[H])"
For i = 1 To 4
Cells(5 + i, 3).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[G])-SUMPRODUCT((Tableau1[OK]=R1C1)*(Tableau1[B]=RC[-1])*Tableau1[H])"
Cells(5 + i, 4).FormulaR1C1 = "=R[-1]C+SUMPRODUCT((Tableau1[B]=RC[-2])*Tableau1[G])-SUMPRODUCT
Next i

Range(Cells(5, 3), Cells(9, 4)).Value = Range(Cells(5, 3), Cells(9, 4)).Value
End With
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 931
Membres
103 984
dernier inscrit
maliko67