Rapport de message :*
 

Re: Supprimer certaines valeurs

Titre du sujet : Re: Supprimer certaines valeurs
par myDearFriend! le 13/02/2021 13:53:27

Bonjour Jad73, le Forum,

 

Tu trouveras en pièce jointe une solution possible, je pense.

 

La mise en oeuvre la plus simple, me semble être l'utilisation d'une fonction VBA personnalisée directement dans ta feuille de calcul.

 

Le code VBA que je te propose, est le suivant :

 DANS UN MODULE DE CODE STANDARD (Ex: Module1) 

Function calcMusique(R As Range, Optional vSomme As Boolean = False) As Integer
'myDearFriend! - www.mdf-xlpages.com
Dim vTab As Variant
Dim T As String
Dim i As Byte, vSum As Integer
    Application.Volatile
    T = R.Text
    'Liste expressions à tronquer (à adapter!)
    vTab = Array("(18)", "(19)", "(20)", "D", "T", "p", "h")
    For i = 0 To UBound(vTab)
        T = Replace(T, vTab(i), "")
    Next i
    T = Trim(Replace(T, "  ", " "))
    'Mettre les éléments en tableau
    vTab = Split(T, " ")
    'Calcul
    If vSomme Then
        'Faire la somme des items
        For i = 0 To UBound(vTab)
            vSum = vSum + vTab(i)
        Next i
        calcMusique = vSum
    Else
        calcMusique = UBound(vTab) + 1
    End If
End Function

 

FONCTIONNEMENT :

Soit l'expression suivante en cellule A1 par exemple :

(20) 1p 12p 4p 2p Dp 7p 6p 7p (19) 4p 3p 1p 1p

Cette fonction VBA va tout d'abord considérer uniquement les valeurs chiffrées suivantes :

(20) 1p 12p 4p 2p Dp 7p 6p 7p (19) 4p 3p 1p 1p

  • Pour en obtenir la SOMME, tu fais appel à cette fonction avec l'argument "VRAI", comme suit :
=calcMusique(A1;VRAI)
  • Et pour obtenir le NOMBRE de VALEURS chiffrées à considérer (soit nombre de courses) :
=calcMusique(A1;FAUX)

ou bien, tout simplement comme suit, car l'argument "FAUX" est une valeur par défaut  :

=calcMusique(A1)

  

Dans l'exemple ci-dessus, tu obtiendras une somme de « 48 », et un nombre de valeurs de « 11 ».

 

 

J'ai appliqué cette fonction dans ta feuille (classeur en pièce jointe).

J'espère que ça pourra t'aider...

 

Bien cordialement,