XL 2019 Création d'une fonction VBA avec de nombreuses conditions

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 !

Merlin258413

XLDnaute Occasionnel
Bonjour je viens solliciter votre aide car je n'ai pas un super niveau en VBA.
J'ai une fonction Excel qui fonctionne parfaitement mais je trouve qu'il y a beaucoup de Si et je pense peut être améliorée
=SI(DROITE(GAUCHE(G2;7);2)="CA";"ENTRETIEN";SI(DROITE(GAUCHE(G2;7);2)="CU";"ENTRETIEN";SI(DROITE(GAUCHE(G2;7);2)="PR";"ENTRETIEN";SI(C2="Materiels - Entretien";"ENTRETIEN";SI(ESTNUM(CHERCHE("Carburant";D2));"Carburant";SI(D2="Couts de detention du parc";"PARC";SI(D2="Personnel Interim.";"Personnel Intérim";SI(GAUCHE(D2;2)="MO";"MO";SI(D2="Revente interne d'atelier";"ENTRETIEN";"Autres"))))))))) en cellule W2

Je désire savoir s'il est possible de créer une fonction VBA en regroupant tout ses critères

En vous remerciant par avance


Cordialement
André
 

Pièces jointes

Dernière édition:
Hello

avec une fonction personnalisée peut etre??

Dans la mesure où ta formule fait des tests sur plusieurs colonnes et dans un certain ordre.. la fonction n'est pas forcément plus simple à écrire


VB:
Public Function Dépenses(target As Range) As String
Dépenses = "Autres"
    Dimin = Right(Left(target, 7), 2)
    ColC = target.Offset(0, -4)
    ColD = target.Offset(0, -3)
    Select Case Dimin
        Case "CA", "CU", "PR"
            Dépenses = "ENTRETIEN"
            Exit Function
    End Select
    If ColC = "Materiels - Entretien" Then
        Dépenses = "ENTRETIEN"
        Exit Function
    End If
    If InStr(1, UCase(ColD), "CARBURANT") <> 0 Then
        Dépenses = "Carburant"
        Exit Function
    End If
    Select Case ColD
        Case "Couts de detention du parc"
            Dépenses = "PARC"
            Exit Function
        Case "Personnel Interim."
            Dépenses = "Personnel Intérim"
            Exit Function
    End Select
    If Left(ColD, 2) = "MO" Then
        Dépenses = "MO"
        Exit Function
    End If
    If ColD = "Revente interne d'atelier" Then
        Dépenses = "ENTRETIEN"
        Exit Function
    End If
End Function

'SI(DROITE(GAUCHE(G2;7);2)="CA";"ENTRETIEN";
'SI(DROITE(GAUCHE(G2;7);2)="CU";"ENTRETIEN";
'SI(DROITE(GAUCHE(G2;7);2)="PR";"ENTRETIEN";
'SI(C2="Materiels - Entretien";"ENTRETIEN";
'SI(ESTNUM(CHERCHE("Carburant";D2));"Carburant";
'SI(D2="Couts de detention du parc";"PARC";
'SI(D2="Personnel Interim.";"Personnel Intérim";
'SI(GAUCHE(D2;2)="MO";"MO";
'SI(D2="Revente interne d'atelier";"ENTRETIEN";"Autres")))))))))
 

Pièces jointes

- 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
Retour