Transformer une cellule alphanumérique en cellule numérique

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #20856561
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







Gloops
Le #20856811
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.
Fredo P.
Le #20856461
=Mid([A1],len([A1])-7,4)

--

Fredo P.


"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







Jacky
Le #20856681
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"
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







Jacky
Le #20856791
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" 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"
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











Gloops
Le #20856911
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







michdenis
Le #20856901
Bonjour,

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



"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
Modeste
Le #20856891
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)
Gloops
Le #20857001
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.
isabelle
Le #20857171
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







Publicité
Poster une réponse
Anonyme