OVH Cloud OVH Cloud

Comment extraire les chiffres contenu dans les cellules alphanumériques???

16 réponses
Avatar
fred
Bonjour,
Par une macro j'aimerais extraire les chiffres contenu dans les cellules
d'une colonne (cellules avec chaine alphanumérique et positionnement
aléatoire des chiffres et du texte dans ces cellules :
def1585....yrrzesd1598... 458gtred...etc...) pour les "coller" sur une autre
colonne???
Merci de votre aide

6 réponses

1 2
Avatar
fred
Nom de feuille = Feuil1
Au lancement de Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0,
0) & ")"
J'ai le message d'erreur #NOM? qui apparait sur la colonne C
Je cherche mais je ne vois pas d'où ça peut provenir!
Merci encore!

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

Bonjour Fred,

à la fin de ta procédure, tu n'as qu'à appeler la procédure
"ExtractionColonneC" de cette manière

ExtractionColonneC "Feuil1" 'et tu remplaces Feuil1 par le nom de ta
feuille où sont tes données.

La fonction doit être dans un module standard.
'-----------------------------------
Sub ExtractionColonneC(NomFeuille as String)

Dim Rg As Range
With Worksheets(NomFeuille)
Set Rg = .Range("C1:C" & .Range("B65536").End(xlUp).Row)
Rg.NumberFormat = """0#"" ""##"" ""##"" ""##"";,;"
Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0, 0) & ")"

End With

End Sub
'-----------------------------------

Function OnlyNumber(Cellule As Range)

Dim Nb As Integer, b As String, A As Integer
Nb = Len(Cellule)
For A = 1 To Nb
b = Mid(Cellule.Text, A, 1)
If IsNumeric(b) Then
OnlyNumber = OnlyNumber & b
End If
Next
End Function
'-----------------------------------

Salutations!



"fred" a écrit dans le message de news:
4330967c$0$29673$
Ok j'ai testé!!!!
En résumé je fais un copier coller d'un annuaire sur internet sur une
feuille excel
Par enregistrement de macro j'obtiens ceci :
Sub Annuaire()
'
' ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:úlse, _
DisplayAsIcon:úlse
Columns("A:A").Select
' Je fais un copier coller spécial en unicode sur A1
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited,
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:=True,
OtherChar
_
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
'Conversion des Données en Délimité par le caractère |

Cells.Select
Selection.Columns.AutoFit
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
' Je recherche et remplace "A proximité" par "" dans la colonne A (qui est
superflu donc a éliminé)
Selection.Replace What:="A proximité", Replacement:="", LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
Columns("B:B").Select

End Sub
Je suis en colonne B où se trouve les données alphanumériques.
Comment faire pour intégrer la fonction dans cette macro maintenant sans
que
j'intervienne (=OnlyNumber(B2))...comment faire appel à la fonction du
module standard???
J'ai tout de même testé en rajoutant le module standard comprenant la
fonction et inscrit =OnlyNumber(B2) dans C2...c'est ok mais si le chiffre
commence par 0 (exemple numérode télélphone)...il n'apparait pas (je dois
mettre la colonne C en format Spécial téléphone)...et si la ligne est
vide...le chiffre 0 apparait (ce que je ne voudrais pas)!!!
Merci déjà infiniment pour votre aide!!!!




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

Bonjour AV,

| Même avec les nombres comportant des décimales ?

Bien sûr, y compris ces derniers puisque la question n'en fait pas
mention.
;-)


Salutations!










Avatar
fred
La formule est correcte maintenant effectivement quelque soit la position
des chiffres par rapport aux lettres...Deux erreurs persistent tout de même
Si j'ai un espace dans le chiffre j'ai le message d'erreur #VALEUR! qui
apparait!
Je dois mettre le format Nombre Spécial Téléphone dans la colonne pour faire
apparaitre le chiffre 0 en première position...
Merci bcp pour votre aide.

"AV" a écrit dans le message de news:
OU$
La formule matricielle fonctionne à condition qu'il y ait un espace entre
les chiffres et les lettres lorsque les chiffres sont placés avant les
lettres dans la celleule (sinon #VALEUR)...


S'il n'y a pas d'espace séparateur, enlève le +1 après le NBCAR(A1)

AV





Avatar
michdenis
Bonjour Fred,

Après avoir copié les 2 procédures dans un module standard, tu n'as qu'à inscrire cette ligne de commande à la fin de ta macro ceci
:

ExtractionColonneC "Feuil1"

Et tu dois remplacer dans cette ligne de commande "Feuil1" par le nom de ta feuille où l'action se déroule.


Je ne peux pas te proposer quelque chose de "plus facile" à mettre en application.



Tout ce qui suit doit être copié dans un module standard
'--------------------------
Function OnlyNumber(Cellule As Range)

Dim Nb As Integer, b As String, A As Integer
Nb = Len(Cellule)
For A = 1 To Nb
b = Mid(Cellule.Text, A, 1)
If IsNumeric(b) Then
OnlyNumber = OnlyNumber & b
End If
Next
End Function

'--------------------------
Sub ExtractionColonneC(NomFeuille As String)

Dim Rg As Range, C As Range
With Worksheets(NomFeuille)
Set Rg = .Range("C1:C" & .Range("B65536").End(xlUp).Row)
Rg.NumberFormat = """0#"" ""##"" ""##"" ""##"";,;"
Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0, 0) & ")"

End With

End Sub
'--------------------------



Salutations!


"fred" a écrit dans le message de news: 4331368a$0$18830$
Nom de feuille = Feuil1
Au lancement de Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0,
0) & ")"
J'ai le message d'erreur #NOM? qui apparait sur la colonne C
Je cherche mais je ne vois pas d'où ça peut provenir!
Merci encore!

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

Bonjour Fred,

à la fin de ta procédure, tu n'as qu'à appeler la procédure
"ExtractionColonneC" de cette manière

ExtractionColonneC "Feuil1" 'et tu remplaces Feuil1 par le nom de ta
feuille où sont tes données.

La fonction doit être dans un module standard.
'-----------------------------------
Sub ExtractionColonneC(NomFeuille as String)

Dim Rg As Range
With Worksheets(NomFeuille)
Set Rg = .Range("C1:C" & .Range("B65536").End(xlUp).Row)
Rg.NumberFormat = """0#"" ""##"" ""##"" ""##"";,;"
Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0, 0) & ")"

End With

End Sub
'-----------------------------------

Function OnlyNumber(Cellule As Range)

Dim Nb As Integer, b As String, A As Integer
Nb = Len(Cellule)
For A = 1 To Nb
b = Mid(Cellule.Text, A, 1)
If IsNumeric(b) Then
OnlyNumber = OnlyNumber & b
End If
Next
End Function
'-----------------------------------

Salutations!



"fred" a écrit dans le message de news:
4330967c$0$29673$
Ok j'ai testé!!!!
En résumé je fais un copier coller d'un annuaire sur internet sur une
feuille excel
Par enregistrement de macro j'obtiens ceci :
Sub Annuaire()
'
' ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:úlse, _
DisplayAsIcon:úlse
Columns("A:A").Select
' Je fais un copier coller spécial en unicode sur A1
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited,
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:=True,
OtherChar
_
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
'Conversion des Données en Délimité par le caractère |

Cells.Select
Selection.Columns.AutoFit
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
' Je recherche et remplace "A proximité" par "" dans la colonne A (qui est
superflu donc a éliminé)
Selection.Replace What:="A proximité", Replacement:="", LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
Columns("B:B").Select

End Sub
Je suis en colonne B où se trouve les données alphanumériques.
Comment faire pour intégrer la fonction dans cette macro maintenant sans
que
j'intervienne (=OnlyNumber(B2))...comment faire appel à la fonction du
module standard???
J'ai tout de même testé en rajoutant le module standard comprenant la
fonction et inscrit =OnlyNumber(B2) dans C2...c'est ok mais si le chiffre
commence par 0 (exemple numérode télélphone)...il n'apparait pas (je dois
mettre la colonne C en format Spécial téléphone)...et si la ligne est
vide...le chiffre 0 apparait (ce que je ne voudrais pas)!!!
Merci déjà infiniment pour votre aide!!!!




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

Bonjour AV,

| Même avec les nombres comportant des décimales ?

Bien sûr, y compris ces derniers puisque la question n'en fait pas
mention.
;-)


Salutations!










Avatar
fred
J'ai retesté et ça fonctionne nickel...(j'avais oublié une procédure...)
Encore merci bcp pour votre aide!!!

"michdenis" a écrit dans le message de news:
%23pz68%
Bonjour Fred,

Après avoir copié les 2 procédures dans un module standard, tu n'as qu'à
inscrire cette ligne de commande à la fin de ta macro ceci
:

ExtractionColonneC "Feuil1"

Et tu dois remplacer dans cette ligne de commande "Feuil1" par le nom de
ta feuille où l'action se déroule.


Je ne peux pas te proposer quelque chose de "plus facile" à mettre en
application.



Tout ce qui suit doit être copié dans un module standard
'--------------------------
Function OnlyNumber(Cellule As Range)

Dim Nb As Integer, b As String, A As Integer
Nb = Len(Cellule)
For A = 1 To Nb
b = Mid(Cellule.Text, A, 1)
If IsNumeric(b) Then
OnlyNumber = OnlyNumber & b
End If
Next
End Function

'--------------------------
Sub ExtractionColonneC(NomFeuille As String)

Dim Rg As Range, C As Range
With Worksheets(NomFeuille)
Set Rg = .Range("C1:C" & .Range("B65536").End(xlUp).Row)
Rg.NumberFormat = """0#"" ""##"" ""##"" ""##"";,;"
Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0, 0) & ")"

End With

End Sub
'--------------------------



Salutations!


"fred" a écrit dans le message de news:
4331368a$0$18830$
Nom de feuille = Feuil1
Au lancement de Rg.Formula = "=OnlyNumber(" &
Rg(1).Offset(, -1).Address(0,
0) & ")"
J'ai le message d'erreur #NOM? qui apparait sur la colonne C
Je cherche mais je ne vois pas d'où ça peut provenir!
Merci encore!

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

Bonjour Fred,

à la fin de ta procédure, tu n'as qu'à appeler la procédure
"ExtractionColonneC" de cette manière

ExtractionColonneC "Feuil1" 'et tu remplaces Feuil1 par le nom de ta
feuille où sont tes données.

La fonction doit être dans un module standard.
'-----------------------------------
Sub ExtractionColonneC(NomFeuille as String)

Dim Rg As Range
With Worksheets(NomFeuille)
Set Rg = .Range("C1:C" & .Range("B65536").End(xlUp).Row)
Rg.NumberFormat = """0#"" ""##"" ""##"" ""##"";,;"
Rg.Formula = "=OnlyNumber(" & Rg(1).Offset(, -1).Address(0, 0) & ")"

End With

End Sub
'-----------------------------------

Function OnlyNumber(Cellule As Range)

Dim Nb As Integer, b As String, A As Integer
Nb = Len(Cellule)
For A = 1 To Nb
b = Mid(Cellule.Text, A, 1)
If IsNumeric(b) Then
OnlyNumber = OnlyNumber & b
End If
Next
End Function
'-----------------------------------

Salutations!



"fred" a écrit dans le message de news:
4330967c$0$29673$
Ok j'ai testé!!!!
En résumé je fais un copier coller d'un annuaire sur internet sur une
feuille excel
Par enregistrement de macro j'obtiens ceci :
Sub Annuaire()
'
' ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:úlse, _
DisplayAsIcon:úlse
Columns("A:A").Select
' Je fais un copier coller spécial en unicode sur A1
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited,
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:=True,
OtherChar
_
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
'Conversion des Données en Délimité par le caractère |

Cells.Select
Selection.Columns.AutoFit
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
' Je recherche et remplace "A proximité" par "" dans la colonne A (qui
est
superflu donc a éliminé)
Selection.Replace What:="A proximité", Replacement:="",
LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
Columns("B:B").Select

End Sub
Je suis en colonne B où se trouve les données alphanumériques.
Comment faire pour intégrer la fonction dans cette macro maintenant sans
que
j'intervienne (=OnlyNumber(B2))...comment faire appel à la fonction du
module standard???
J'ai tout de même testé en rajoutant le module standard comprenant la
fonction et inscrit =OnlyNumber(B2) dans C2...c'est ok mais si le chiffre
commence par 0 (exemple numérode télélphone)...il n'apparait pas (je dois
mettre la colonne C en format Spécial téléphone)...et si la ligne est
vide...le chiffre 0 apparait (ce que je ne voudrais pas)!!!
Merci déjà infiniment pour votre aide!!!!




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

Bonjour AV,

| Même avec les nombres comportant des décimales ?

Bien sûr, y compris ces derniers puisque la question n'en fait pas
mention.
;-)


Salutations!















Avatar
sleilo60
Le mardi 20 Septembre 2005 à 12:25 par fred :
Bonjour,
Par une macro j'aimerais extraire les chiffres contenu dans les cellules
d'une colonne (cellules avec chaine alphanumérique et positionnement
aléatoire des chiffres et du texte dans ces cellules :
def1585....yrrzesd1598... 458gtred...etc...) pour les "coller" sur
une autre
colonne???
Merci de votre aide


Bonjour,

Cela m’intéresse énormément ce genre de décomposition de chaine de caractère, est-ce que ce serait possible de l'appliquer à une chaine telle que AB050TX40-60S et d'obtenir dans les cellule de droite : AB / 050 / TX / 40 / 60 / S ?
et cela sur toute une colonne ?
en sachant que le nb de lettre ou de chiffres varie selon la reference.

j'ai 22 000 références à analyser... Help me please :)
Avatar
sleilo60
Le mardi 20 Septembre 2005 à 12:25 par fred :
Bonjour,
Par une macro j'aimerais extraire les chiffres contenu dans les cellules
d'une colonne (cellules avec chaine alphanumérique et positionnement
aléatoire des chiffres et du texte dans ces cellules :
def1585....yrrzesd1598... 458gtred...etc...) pour les "coller" sur
une autre
colonne???
Merci de votre aide


Bonjour,

Cela m’intéresse énormément ce genre de décomposition de chaine de caractère, est-ce que ce serait possible de l'appliquer à une chaine telle que AB050TX40-60S et d'obtenir dans les cellule de droite : AB / 050 / TX / 40 / 60 / S ?
et cela sur toute une colonne ?
en sachant que le nb de lettre ou de chiffres varie selon la reference.

j'ai 22 000 références à analyser... Help me please :)
1 2