Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…