MACRO CHERCHE et STRX - VB/VBA/VBS - Programmation
Marsh Posté le 29-07-2010 à 10:28:54
Cela demande un peu de programmation.
Pour y arriver, je vous conseillerais d'utiliser les fonctions InStr() et Mid().
Voir http://www.techonthenet.com/excel/formulas/instr.php et http://www.techonthenet.com/excel/formulas/mid.php
InStr vous donne la position de "AP".
Ensuite, avec cette position, vous la mettez en premier paramètre dans un autre InStr pour récupérer la position de la parenthèse fermante qui suit le "AP".
Vous extrayez ensuite ce qui se trouve entre ces deux positions avec Mid.
Vous faites quelques ajustements pour allez au-delà du signe égal.
Marsh Posté le 29-07-2010 à 13:40:27
Il faut surtout regarder la chaine "AP=" et non pas seulement "AP" car si "AP" est présent dans un nom de famille (par ex) ca va tout foutre en l'air.
Donc, je pars du principe qu'en A1 tu as :
13/01/2010 - Temps passé : 6,00 h - (PAILLISSON Alain AP=1,00;PAILLISSON Alain AP=2,50;BACIGALUPI THIERRY TB=2,50) –
Je t'ai créé deux fonctions. Une dans laquelle tu ne specifies que la chaine, il te calcule le truc avec "AP"
L'autre ou tu peux parametrer le nombre d'occurence max rencontrées possibles (combien de fois peut contenir "AP" par ex) et ce que tu cherches (ici on cherche AP mais on pourrait chercher TB)
Code :
|
Donc si en A2 on saisi :
=ofouquay_ParamChaineOnly(A1)
il nous renvoi bien 3.5, et avec cette formule on ne passe en parametre que la chaine. Il prend forcément 2 en valeur max d'occurence, et la chaine a chercher est forcement "AP="
En A3 on saisi :
=ofouquay_Param(A1;2;"AP=" )
Il renvoi aussi 3.5, mais la on lui precise que le nb d'occurence c'est 2 (ce qui veut dire que tu pourrais mettre 10, il te ferait le calcul pour 10 fois rencontré "AP=" ) et on precise la chaine a chercher (ici "AP=" )
Maintenant si en A4 on saisi :
=ofouquay_Param(A1;2;"TB=" )
Il nous renvoi 2.5
Cordialement
Marsh Posté le 28-07-2010 à 16:37:47
Bonjour
J’aimerais une routine sous VBA qui puisse m’extraire une chaines de texte uniquement après avoir vérifier la présence d’une autre chaine
Je m’explique
Dans la phrase suivante :
"13/07/2010 - Temps passé : 2,50 h - (PAILLISSON Alain AP=2,50) –"
Si « AP » est présent dans la chaine, je veux extraire les « 2,50 »
MAIS
Il se peut qu’il soit 2 fois présents dans la chaine, je veux donc le cumul des 2 valeurs
"13/01/2010 - Temps passé : 6,00 h - (PAILLISSON Alain AP=1,00;PAILLISSON Alain AP=2,50;BACIGALUPI THIERRY TB=2,50) –"
Si « AP » est présent dans la chaine, je veux extraire les « 1 » et « 2,5 » donc 3,5
Merci de votre aide