• Initiateur de la discussion Initiateur de la discussion tanerbus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tanerbus

Guest
bonjour sous excel j'ai fait une formule

=SOMME.SI(SI(NBCAR(C9)=3;feuil3!F:F;feuil3!G:G);C9;feuil3!$T:$T)

cette formule est un peut long est compliquer pour un utilisateur basic
j'aimerais donc la crée en vba un fonction pour obtenir le résultat suivant :

=formule(C9)

merci
 
Dernière modification par un modérateur:
Re : formul en vba

Salut,tanerbus,le Forum

la traduction de votre Formule en Vb a l'aide de l'enregistreur évidemment ça donne ca :
Code:
Sub Trd_Frmle()
    ActiveCell.FormulaR1C1 = _
    "=SUMIF(IF(LEN(R[-6]C)=3,Feuil3!C[3],Feuil3!C[4]),R[-6]C,Feuil3!C20:C[17])"
End Sub

quant au resultat je te laisse le soin d'éssayé

Cordialement
 
Re : formul en vba

ma formule additionne les chiffres de la colonne de la colonne T selon un critère

le critère est si la variable = 3 caractère alors la plage de la somme.si = colonne F sinon colonne G



j'ai tester ca
mais sa marche pas

Public Function fonction(variable As Range)
fonction = SUMIF(IF(LEN(variable)=3,feuil3!C6,feuil3!C7),variable,feuil3!C20)
End Function
 
Re : formul en vba

Un essai de réponse...
Code:
Function Essai(Cellule As Range)
Dim NumCol As Integer
Dim NumLig As Double
Dim Total As Double
    NumCol = 7 + (Len(Cellule.Value) = 3)
    Total = 0
    For NumLig = 1 To 65535
        If Sheets("Feuil3").Cells(NumLig, NumCol).Value = Cellule.Value Then Total = Total + Sheets("Feuil3").Cells(NumLig, 20).Value
    Next NumLig
    Essai = Total
End Function
Ne connaissant pas l'équivalent de "somme.si" en VBA, j'ai écrit un bout de code pour le rempacer, mais son exécution est relativement longue... 🙁
 
Dernière édition:
Re : formul en vba

je te propose ça (si j'ai bien compris) :

Code:
Public Function formul(critere As Range) As Integer

Dim plage  As Range, somme_plage As Range

If Len(critere.Value) = 3 Then
    Set plage = ThisWorkbook.Sheets("Feuil3").Range("F:F")
Else
    Set plage = ThisWorkbook.Sheets("Feuil3").Range("G:G")
End If

Set somme_plage = ThisWorkbook.Sheets("Feuil3").Range("T:T")

formul = WorksheetFunction.SumIf(plage, critere, somme_plage)

End Function

A+
 
Re : formul en vba

je te propose ça (si j'ai bien compris) :

Code:
Public Function formul(critere As Range) As Integer

Dim plage  As Range, somme_plage As Range

If Len(critere.Value) = 3 Then
    Set plage = ThisWorkbook.Sheets("Feuil3").Range("F:F")
Else
    Set plage = ThisWorkbook.Sheets("Feuil3").Range("G:G")
End If

Set somme_plage = ThisWorkbook.Sheets("Feuil3").Range("T:T")

formul = WorksheetFunction.SumIf(plage, critere, somme_plage)

End Function

A+


je comprend la formule est ces tout a fait sa que je recherche mais malheureusement sa ne marche pas je ne ces pas pourquoi

Un essai de réponse...
Code:

Function Essai(Cellule As Range)
Dim NumCol As Integer
Dim NumLig As Double
Dim Total As Double
NumCol = 7 + (Len(Cellule.Value) = 3)
Total = 0
For NumLig = 1 To 65535
If Sheets("Feuil3").Cells(NumLig, NumCol).Value = Cellule.Value Then Total = Total + Sheets("Feuil3").Cells(NumLig, 20).Value
Next NumLig
Essai = Total
End Function

celle la marche très bien, même si la formule me parais moins claire mais bon sa ira.



je tien remercier tout le forum www.excel-downloads.com pour cette efficacité
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour