XL 2010 Fonction personnalisée

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 !

kingfadhel

XLDnaute Impliqué
Bonsoir,
ce que je souhaite c'est d'avoir une fonction personnalisée qui:


- cherche les mots de B1 à D1 dans la colonne A
- une fois trouvée on substitue la valeur numérique qui la précède
- la dernière colonne somme les colonnes B à D
exemple :
en B4 on devrait avoir 2, en B7 ==> 3
en D2 ==> 3 (1+2)
Capture.JPG


Merci d'avance
 

Pièces jointes

Solution
Bonjour,

à condition qu'il y ait toujours un espace devant le mot :
VB:
Function nbV(ByVal ch As String, typ As String) As Double
    Dim tmp, i As Long
    ch = Replace(ch, " " & typ, "_" & typ)
    tmp = Split(ch, " ")
    For i = 0 To UBound(tmp)
        If InStr(tmp(i), "_" & typ) > 0 Then nbV = Val(tmp(i)): Exit For
    Next i
End Function

En B2 : =nbV($A2;B$1)
à tirer à droite et vers le bas.
eric
Bonjour,

à condition qu'il y ait toujours un espace devant le mot :
VB:
Function nbV(ByVal ch As String, typ As String) As Double
    Dim tmp, i As Long
    ch = Replace(ch, " " & typ, "_" & typ)
    tmp = Split(ch, " ")
    For i = 0 To UBound(tmp)
        If InStr(tmp(i), "_" & typ) > 0 Then nbV = Val(tmp(i)): Exit For
    Next i
End Function

En B2 : =nbV($A2;B$1)
à tirer à droite et vers le bas.
eric
 
Bonjour,

à condition qu'il y ait toujours un espace devant le mot :
VB:
Function nbV(ByVal ch As String, typ As String) As Double
    Dim tmp, i As Long
    ch = Replace(ch, " " & typ, "_" & typ)
    tmp = Split(ch, " ")
    For i = 0 To UBound(tmp)
        If InStr(tmp(i), "_" & typ) > 0 Then nbV = Val(tmp(i)): Exit For
    Next i
End Function

En B2 : =nbV($A2;B$1)
à tirer à droite et vers le bas.
eric
@eriiiic excellent, rapide et efficace.
 
Tu sais que tu peux faire F1 sur les fonctions que tu ne connais pas ? Il n'y a pas beaucoup de lignes et l'aide est bien faite...
VB:
Function nbV(ByVal ch As String, typ As String) As Double
    Dim tmp, i As Long
    ch = Replace(ch, " " & typ, "_" & typ) ' remplacer les espaces devant les mots par des "_"
    tmp = Split(ch, " ") ' découper sur les espaces
    For i = 0 To UBound(tmp) ' pour chaque morceau
        ' si "_mot" est trouvé on transforme en numérique le début de chaine et on quitte la boucle
        If InStr(tmp(i), "_" & typ) > 0 Then nbV = Val(tmp(i)): Exit For
    Next i
End Function
eric
 
- 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

Discussions similaires

Réponses
2
Affichages
134
Réponses
3
Affichages
175
Réponses
2
Affichages
332
Réponses
12
Affichages
557
Réponses
2
Affichages
369
Retour