XL 2010 Ressortir uniquement les nombres de la musique d'une course hippique

  • Initiateur de la discussion Initiateur de la discussion mamarus1
  • 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 !

mamarus1

XLDnaute Nouveau
Bonjour le forum,
comme expliqué dans le titre, je souhaite faire ressortir pour la musique d'un cheval, uniquement les 6 n° maximum d'arrivée de chaque course.

Exemple de musique d'un cheval : 2p3h(24)4m2pDa(23)7p3p3p8p

Sur l'exemple ci dessus, on devrait récupérer et mettre dans chaque cellule : 2 puis cellule d'après le 3 puis le 4 puis le 2 le Da ou Dm comptant 0 puis le 7.
Nous faisons abstraction des lettres accompagnant le chiffre, les parenthèses avec l'année et le Da ou Dm prenant la valeur de 0.

Je joint un fichier en exemple avec le résultat attendu , celui ci est fait par une formule trouvé sur le net mais qui finalement ne convient pas.
je pense que la solution doit passer par un code VBA, ou l'on doit lui demander pour chaque cellule, uniquement le nombre en faisant abstraction des lettres l'accompagnant ainsi que les parenthèses avec l'année qui se trouve à l’intérieur (24) par exemple.
sur la formule dont je dispose, la ventilation ne se déclenche pas ! ou met parfois des 0 partout !

Nota: les lettres accompagnant la musique pour le trot ou pour le galop sont différentes, j' y ai mis les les 2 dans l'exemple joint.

Si quelqu'un peut s’intéresser à mon sujet, je l'en remercie par avance;

Cordialement,

Mamarus
 

Pièces jointes

Solution
Bon ça ne va pas en lignes 14 et 15, vous voulez remplacer Da et Dm par 0 :
VB:
Function ChiffresMusique(txt$)
Dim ub%, a(1 To 6), i%, n%, x$
txt = Replace(Replace(txt, "Da", 0), "Dm", 0)
ub = UBound(a)
For i = 1 To Len(txt)
    If n < ub Then
        x = Mid(txt, i, 1)
        If x = "(" Then i = i + 3
        If IsNumeric(x) Then n = n + 1: a(n) = Val(x)
    End If
Next i
For i = n + 1 To ub: a(i) = "": Next i
ChiffresMusique = a 'vecteur ligne
End Function
Bonjour Mamarus,
Regardez dans la bibliothèque, il y a de nombreux posts qui traite ce sujet :
Comme :
 
Bonjour Sylvanu,

La formule que j'utilise et qui ne convient pas provient de mémoire du forum, pour l'avoir parcouru, il y a en effet une multitude de pseudo solutions mais qui ne couvrent pas l'ensemble des cas, d'ou ma demande.

Merci et bonne journée.

cordialement,

Mamarus
 
Bonjour mamarus1, sylvanu,

Une solution simple par fonction VBA :
VB:
Function ChiffresMusique(txt$)
Dim ub%, a(1 To 6), i%, n%, x$
ub = UBound(a)
For i = 1 To Len(txt)
    If n < ub Then
        x = Mid(txt, i, 1)
        If x = "(" Then i = i + 3
        If IsNumeric(x) Then n = n + 1: a(n) = Val(x)
    End If
Next i
For i = n + 1 To ub: a(i) = "": Next i
ChiffresMusique = a 'vecteur ligne
End Function
Sélectionner la plage K3: P3, entrer la formule dans la barre de formule et valider matriciellement par Ctrl+Maj+Entrée.

A+
 

Pièces jointes

Bon ça ne va pas en lignes 14 et 15, vous voulez remplacer Da et Dm par 0 :
VB:
Function ChiffresMusique(txt$)
Dim ub%, a(1 To 6), i%, n%, x$
txt = Replace(Replace(txt, "Da", 0), "Dm", 0)
ub = UBound(a)
For i = 1 To Len(txt)
    If n < ub Then
        x = Mid(txt, i, 1)
        If x = "(" Then i = i + 3
        If IsNumeric(x) Then n = n + 1: a(n) = Val(x)
    End If
Next i
For i = n + 1 To ub: a(i) = "": Next i
ChiffresMusique = a 'vecteur ligne
End Function
 

Pièces jointes

Bon ça ne va pas en lignes 14 et 15, vous voulez remplacer Da et Dm par 0 :
VB:
Function ChiffresMusique(txt$)
Dim ub%, a(1 To 6), i%, n%, x$
txt = Replace(Replace(txt, "Da", 0), "Dm", 0)
ub = UBound(a)
For i = 1 To Len(txt)
    If n < ub Then
        x = Mid(txt, i, 1)
        If x = "(" Then i = i + 3
        If IsNumeric(x) Then n = n + 1: a(n) = Val(x)
    End If
Next i
For i = n + 1 To ub: a(i) = "": Next i
ChiffresMusique = a 'vecteur ligne
End Function
Bonjour Job75,
Merci de t'être intéressé à mon problème, cela a l'air de fonctionner, pour le Da ou Dm , pas de souci, cela prend la valeur 0 au final.
Je me permettrai de revenir vers toi, s'il y a un souci, mais à priori cela a l'air OK
Merci en tout cas et bonne journée,
Cordialement,

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