Transformer une cellule alphanumérique en cellule numérique
26 réponses
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
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à ?
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 ! ;-)
> =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 ! ;-)
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 ! ;-)
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.
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
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.
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
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
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