Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2 3
Avatar
Gloops
Bonjour,

En attendant que quelqu'un propose d'utiliser les "expressions
régulières", la première réponse qui me vient à l'esprit est de lire
caractère par caractère, pour évaluer si le caractère est un chif fre (ou
un séparateur décimal), et dans l'affirmative le concaténer dans un e
chaîne temporaire, dont on évaluera, en fin de traitement, la valeur par
la fonction Value(string).

___________________________________
Flac a écrit, le 29/12/2009 23:11 :
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







Avatar
Gloops
Fredo P. a écrit, le 30/12/2009 00:00 :
=Mid([A1],len([A1])-7,4)



Ah, effectivement, si on est sûr que la longueur de la partie numériq ue
est toujours la même, et qu'elle est toujours à la fin, on peut faire
comme ça, c'est bien plus simple.
Avatar
Fredo P.
=Mid([A1],len([A1])-7,4)

--

Fredo P.


"Flac" a écrit dans le message de news:

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







Avatar
Jacky
Bonsoir,

Compatible xl 2003-2007
Le texte en A1 dans l'exemple
'-------------
Sub jj()
x% = Mid([A1], Application.Find("_", [A1]) + 1, 4)
MsgBox x
End Sub
'--------------
Sans vba
=STXT(A1;CHERCHE("_";A1)+1;4)
--
Salutations
JJ


"Flac" a écrit dans le message de news:

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







Avatar
Jacky
Re...
Ou si "Allocation_2009.xls" est le nom du classeur
Sans cellule intermédiaire
'------------------
Sub jj()
[a1] = Mid(ThisWorkbook.Name, Application.Find("_", ThisWorkbook.Name) +
1, 4)
End Sub
'-----------------
--
Salutations
JJ


"Jacky" a écrit dans le message de news:
ub%
Bonsoir,

Compatible xl 2003-2007
Le texte en A1 dans l'exemple
'-------------
Sub jj()
x% = Mid([A1], Application.Find("_", [A1]) + 1, 4)
MsgBox x
End Sub
'--------------
Sans vba
=STXT(A1;CHERCHE("_";A1)+1;4)
--
Salutations
JJ


"Flac" a écrit dans le message de news:

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











Avatar
Gloops
Nous voyons là illustrer l'importance de l'interprétation de l'énon cé,
pour anticiper des évolutions possibles dans le format du texte à
transformer.

Fredo est parti du principe que le nombre à extraire est toujours à l a
fin du nom juste avant l'extension, et a compté le nombre de caractèr es
que ça fait à partir du début, en tenant compte de la longueur tota le.

Jacky a remarqué que le nombre se trouve juste après un caractère d e
soulignement, et a pris les quatre caractères suivants.

Pour ma part, j'ai anticipé qu'un jour on puisse avoir
Allocation_2007_Trim_III.xls
Toutefois j'ai pêché en ce sens que si le numéro de trimestre est f ourni
en chiffre arabe, je retourne 20073, qui a l'inconvénient d'être
passablement à côté de la plaque.

Je crois que pour ce cas de figure c'est Jacky qui s'en sort.

Si en revanche nous avons Allocation_3eme_trim_2007.xls, là ce sera Fre do.

Pour ma part, j'ai répondu à "L'important est que je veux ne retenir que
les chiffres", mais j'ai mal anticipé la présence d'autres chiffres q ue
ceux de l'année.

___________________________________
Flac a écrit, le 29/12/2009 23:11 :
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







Avatar
michdenis
Bonjour,

Dim T as string, An as Integer
T = Allocation_2009.xls
An = left(Split(t,"_")(1),4)



"Flac" a écrit dans le message de groupe de discussion :

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
Avatar
Modeste
Bonsour® Flac avec ferveur ;o))) vous nous disiez :

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



en vba
Left(Right(ThisWorkbook.Name, 8), 4)
Avatar
Gloops
michdenis a écrit, le 30/12/2009 00:51 :
Bonjour,

Dim T as string, An as Integer
T = Allocation_2009.xls
An = left(Split(t,"_")(1),4)



Il y a des trucs intéressants à faire avec Split.
En reprenant mon idée de la boucle caractère par caractère on peut
garder plusieurs séquences numériques, et les retourner en tableau.
Les données peuvent être transmises en séparant les séquences non
numériques (sauf celle du début et celle de la fin) par des séparat eurs,
par exemple un point-virgule pour chaque séquence.

Allocation_2008_3eme_trimestre.xls
ou
Allocation_2008_trim_3.xls
devient alors
Resultat = "2008;3"
Annee = Split(Resultat, ";")(0)
Trimestre = Split(Resultat, ";")(1)

Toutefois il reste une adaptation à faire lors de l'évolution, pour
évaluer le nombre de séquences numériques et la signification de ch acune
selon sa position.
Avatar
isabelle
bonjour Flac,

=STXT(A1;TROUVE(".";A1)-4;4)*1

isabelle

Le 2009-12-29 17:11, 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