recuperer le chiffres d'une cellule

  • Initiateur de la discussion yabong
  • Date de début
Y

yabong

Guest
bonjour,
je souhaite ecrire une macro qui necessite de comprendre ce qu'il y a dans une cellule et d'en recuperer les chiffres afin de les mettre dans une autre variable.
exple:
cellule = 12345abcd
je souhaiterai que la variable'nombre' soit egale a 12345
si la cellule = 89-sdfsfs alors 'nombre' prendrait la valeur 89

precisions: les chiffres ne sont pas tout le temps placés en debut, milieu ou fin, n'ont pas une taille définie, mais par contre sont contigus.

merci d'avance

yabong

PS: question bonus, quelle est la syntaxe de la commande InputBox (j'ai une version Mac et anglaise de Excel qui ne propose pas l'aide a l'écriture)?
 

CBernardT

XLDnaute Barbatruc
Bonsoir Yabong,

1)Je te propose une petite macro qui ne conserve que les chiffres d'une expression.

La plage de travail est 'A1:A20'.

Sub JusteLesChiffres()
Dim Plage As Range, C As Range, i As Byte, Nombre As String
'Effacement des lettres et signes
With Sheets('Feuil1')
Set Plage = .Range('A1:A20')
For Each C In Plage
If Len(C) > 0 Then
For i = 1 To Len(C)
If IsNumeric(Mid(C, i, 1)) Then
Nombre = Nombre & Mid(C, i, 1)
End If
Next i
C = CDbl(Nombre)
Nombre = ''
End If
Next C
End With
End Sub

2) Syntaxe d'une input :
Dim Nombre As String, Msg As String, Title As String, Default As String

Msg = 'Veuillez entrer le N° !'
Title = 'CHOIX DE L'UTILISATEUR' ' Définit le titre.
Default = 'numéro' ' Définition de la valeur par défaut.
' Affiche le message, le titre et la valeur par défaut.
Nombre = InputBox(Msg, Title, Default) ' Valeur de la variable.
If Nombre = '' Or Nombre = 'numéro' Then Exit Sub ' Sortie en cas d'erreur de manipulation

Cordialement

Bernard

Message édité par: CBernardT, à: 06/05/2006 10:11
 
A

AV

Guest
Ave,

''... les chiffres ne sont pas tout le temps placés en debut, milieu ou fin, n'ont pas une taille définie, mais par contre sont contigus...''

Une formule matricielle :
=1*(STXT(A1;EQUIV(0;(ESTERREUR(STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1)*1)*1);0);NBCAR(A1)-SOMME((ESTERREUR(STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1)*1)*1))))

Ou une fonction perso à mettre dans un module ordinaire
Exemple d'utilisation : =EXTRACT_ENTIER(A1)

Function EXTRACT_ENTIER(chaine)
For i = 1 To Len(chaine)
If Asc(Mid(chaine, i, 1)) supérieurà 47 And Asc(Mid(chaine, i, 1)) inférieurà 58 Then x = x & Mid(chaine, i, 1)
EXTRACT_ENTIER = x * 1
Next
End Function

PS : Remplacer supérieurà et inférieurà par les bons signes

AV [aaa]
 

CBernardT

XLDnaute Barbatruc
Bonjour Yabong, AV et le forum,

Bien vu AV, l'extraction limitée à certains caractères du code ASCII est une excellente solution pour dépolluer un texte de caractères indésirables. J’archive l’astuce.

Cordialement

Bernard
 

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T