XL 2019 Extraire les chiffres d'une cellule par ordre et faire un caclul

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

Rabeto

XLDnaute Occasionnel
Bonjour,

J'aimerai svp, faire un calcul des chiffres dans une cellule en respectant l'ordre des positions des chiffres.
Un fichier avec un exemple sera plus clair, le but est d'avoir le résultat dans la cellule en vert
La valeurs cellule en jaunes est 10, si ces éléments se présente dans l'une des chaines de caractère.

merci
 

Pièces jointes

Bonjour à toutes & à tous, bonjour @Rabeto
Une petite question, les exemples que tu donnes sont-ils représentatifs de tous les cas de figure : a ou a(##) comme séparateur (avec # représentant 1 chiffre), ou est-ce plus varié ? (des b des c des groupe de 2 lettres etc.)
A bientôt
 
Bonjour Rabeto, AtTheOne,
Un essai en PJ avec la fonction perso :
VB:
Function Decode(C$, N)
    On Error GoTo Fin: T = Split(C, "a")
    For i = 0 To UBound(T)
        If Left(T(i), 1) = "(" Then T(i) = Split(T(i), ")")(1)
    Next i
    Decode = T(N - 1)
Fin:
End Function
La syntaxe est : =Decode($A11;COLONNE()-1) ( le -1 car le 1er résultat est en colonne 2 )
J'ai aussi modifié la formule avec :
Code:
=SIERREUR((5*(11-B11)+4*(11-C11)+3*(11-10)+2*(11-E11))/4;"")
Car pour la 4eme chaine la colonne C donne "R" donc provoque une erreur.
 

Pièces jointes

possible dans ce cas de remplacer les valeurs supérieur à 9 ou <> de chiffre par 11 directement ?
Avec une autre fonction perso, plus simple :
VB:
Function Calcul(Plage As Range)
    On Error GoTo Fin2: T = Plage
    For i = 1 To UBound(T, 2)
        If Not IsNumeric(T(1, i)) Or T(1, i) > 9 Then T(1, i) = 11
    Next i
    Calcul = (5 * (11 - T(1, 1)) + 4 * (11 - T(1, 2)) + 3 * (11 - 10) + 2 * (11 - T(1, 4))) / 4
Fin2:
End Function
Syntaxe : =Calcul(Plage)
 

Pièces jointes

Oups !
Ou encore plus simple, en L11 par ex :
VB:
=(5*SIERREUR(11-B11;0)+4*SIERREUR(11-C11;0)+3*(11-10)+2*SIERREUR(11-E11;0))/4
Attention, cette formule ne supprime que les cas avec lettres mais ne résous pas le pb si la valeur est >9. Si ce cas se présente, l'approche par fonction perso est préférable.

Petite question : Pourquoi le (11-10) et non ( 11- D11 ) pour être homogène ?
 
Dernière édition:
Merci à tous pour votre contribution,

J'ai trouver ce fichier sur le forum, une solution que je trouve bcp plus facile.
Il dissocie les éléments de la colonne J, mais ce qui le différence de mes bases, il y a de l'espace entre les valeurs
quelqu'un sait quoi changer dans la formule si il n'y pas d'espace dans les valeurs ?
 

Pièces jointes

Re-Bonjour @Rabeto
J'ai pas bien compris ta question,
Je cherchais à découper les chaînes que tu donnes en exemple :
8aRa(22)Da1a5a(21)1a1aDa
avec comme séparateur "a" ou "a(22)" ou "a(21)" pour obtenir ta suite de nombres : 8, R, D, 1, 5, 1, 1, D
D'où ma question : les séparateurs sont-ils toujours des "a" ou des "a(##)" (a suivi de 2 chiffres entre parenthèses).
J'ai compris qu'il n'y avait qu'une lettre, mais est-ce toujours un "a" ?
Et qu'il faut ignorer les chiffres entre parenthèses, mais n'y en a-t-il toujours que 2 ?
Tout cela pour chercher une formule matricielle alambiquée avec des noms définis.
Or je suis sur mon téléphone et je ne peux pas définir de nom ni saisir une formule matricielle !
Donc on laisse tomber ...
A bientôt
 
mais ce qui le différence de mes bases
Dans votre fichier à traiter en post #1, il n'y avait que des "a" comme séparateurs. Maintenant il y a des "h", "s", "p" ....
On repart à zéro. C'est un jeu de devinettes ?
Donc même conclusion que AtTheOne. 🙂
NB: Créez une colonne après L et mettez :
VB:
=SUBSTITUE(J5;" ";"")
et travaillez sur cette chaine.
 
La lecture logique de ces valeurs est comme suit : 8a Ra (22) Da 1a 5a (21) 1a 1a Da
J'ai mis des espaces pour que vous comprenez mieux, le (22) correspondent l'année.

Pour être plus précis, c'est une musique ce cheval de course, sur l'année 2022, lors de sa dernière course, le cheval a fini 8-ème en course attelé, d'où le 8a.
Ce que je cherche, c'est de pourvoir extraire le premier élément avant chaque lettre a.

AtTheOne je n'ai pas bien compris ta question, désolé, oui le a peut changer selon la discipline de la course,
Plat : p
Attelé : a
Monté : m
Steeple : s
haie : h
 
Bonjour à toutes & à tous, bonjour @Lorenzini
@AtTheOne je n'ai pas bien compris ta question,
Oui mais tu y as répondu !
Désolé, mais je ne peux pas t'aider avec le matériel dont je dispose pour 3 semaines : un téléphone Samsung A8 et la version gratuite d'Excel (pas de nom défini, pas de formule matricielle etc...)
A bientôt
Alain
 
Dernière édition:
- 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

Retour