OVH Cloud OVH Cloud

Transformer une cellule alphanumérique en cellule numérique

26 réponses
Avatar
Flac
Bonjour à tous,
Excel 2000
Soit la valeur suivante figurant dans la cellule A1
Allocation_2009.xls

Je voudrais par une macro ne retenir que le nombre 2009 (ça pourrait être
aussi bien 2008 ou 2010)
L'important est que je veux ne retenir que les chiffres.

Dans mon exemple, Allocation_2009.xls deviendrait le nombre 2009

Quelle pourrait être la syntaxe de ma macro

Merci

Flac

6 réponses

1 2 3
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

VBA :
=mid([A1],instr([A1],".xls")-4,4)
Formule :
=STXT(A1;TROUVE(".xls";A1)-4;4)



Et que fais-tu de l'extension de fichier "xlam" pour
un fichier de macros complémentaires Version 2007 ?

L'extension d'un modèle Excel 2007 avec Macro : xltm
L'extension d'un modèle Excel 2007 sans Macro : xltx

Ou des fichiers en Html ou Htm ?

Et la liste n'est pas exhaustive !

;-)



Soit la valeur suivante figurant dans la cellule A1
Allocation_2009.xls







??????? extension(s) de ThisWorkbook.Name
sous EXCEL 2007 ??????
(.xlsx si je ne m'abuse)
;o)))
Avatar
michdenis
| ??????? extension(s) de ThisWorkbook.Name
| sous EXCEL 2007 ??????
| (.xlsx si je ne m'abuse)
*** ok si ça t'amuse !

;-)
Avatar
Gloops
michdenis a écrit, le 02/01/2010 16:12 :
Si tu as utilisé cette approche :
=mid([A1],instr([A1],"20"),4)

le chiffre 4 réfère à la longueur de l'extension
du fichier incluant le point ".xls"



Tu es sûr de ton coup, là ?
Avatar
michdenis
> =mid([A1],instr([A1],"20"),4)

le chiffre 4 réfère à la longueur de l'extension
du fichier incluant le point ".xls"



| Tu es sûr de ton coup, là ?

*** Oui, je sais que ce paramètre retourne la longueur
de la chaîne à extraire... dans notre cas, l'année
*** Mais comme l'extension du fichier peut modifier
la longueur de la chaîne, l'extraction faite par
Mid() ne retourne pas le résultat escompté.
*** Tu peux modifier la phraséologie utilisée si
cela t'aide à comprendre ! ;-)
Avatar
Gloops
michdenis a écrit, le 03/01/2010 13:59 :
=mid([A1],instr([A1],"20"),4)

le chiffre 4 réfère à la longueur de l'extension
du fichier incluant le point ".xls"



| Tu es sûr de ton coup, là ?

*** Oui, je sais que ce paramètre retourne la longueur
de la chaîne à extraire... dans notre cas, l'année
*** Mais comme l'extension du fichier peut modifier
la longueur de la chaîne, l'extraction faite par
Mid() ne retourne pas le résultat escompté.
*** Tu peux modifier la phraséologie utilisée si
cela t'aide à comprendre ! ;-)



Pour moi, Mid$(str, début, longueur) retourne effectivement longueur
caractères, mais à partir du caractère n° début, de la chaîne str,
compté depuis le début ... de str.

Le troisième paramètre retourne effectivement la longueur de la chaî ne à
extraire, mais à partir de la première occurrence de "20", dans [A1], à
compter du début.

Donc, on pourrait avoir
"Allocation 2009 comptée aléatoirement à partir d'un échantillon. xls",
ça donnerait toujours 2009, puisque InStr([A1], "20") vaudrait la
longueur de "Allocation " (à 1 près, en vérifiant si on compte depu is 0
ou depuis 1).

De même que si on avait en A1 :
Allocation 2009 aléatoire.xlséchantillon

même si, il faut le reconnaître, on définit rarement sur la machine un
type de fichier xlséchantillon

Ou alors je me trompe, quelque part ?

A noter que ce code ne passe pas l'an 2100.
Avatar
FS
Bonsoir,

Si les délimiteurs du nombre sont toujours les mêmes, un split spécial
(parmi d'autres) :

Function SSplit(S)
SSplit = Split(Split(S, ".")(0), "_")(1) * 1
End Function

Si le premier délimiteur peut varier :

Function SSplit2(S, delim1)
SSplit2 = Split(Split(S, ".")(0), delim1)(1) * 1
End Function

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Flac a écrit :
Bonjour à tous,
Excel 2000
Soit la valeur suivante figurant dans la cellule A1
Allocation_2009.xls

Je voudrais par une macro ne retenir que le nombre 2009 (ça pourrait
être aussi bien 2008 ou 2010)
L'important est que je veux ne retenir que les chiffres.

Dans mon exemple, Allocation_2009.xls deviendrait le nombre 2009

Quelle pourrait être la syntaxe de ma macro

Merci

Flac







1 2 3