extraire numéro Tél d\'une chaine de caractères

tarvel

XLDnaute Occasionnel
extraire numéro Tél d'une chaine de caractères

Bonjour,
Dans une colonne A j'ai des données correspondant à uen chaine de caractères avec nom prénom code postal tél
Avec l'aide d'un macro j'aimerais extraire le numéro de téléphone ## ## ## ## ## qui se situe à droite de la cellule et le placer en offset (0,4).
Ce numéro n'existe pas sur toutes les cellules de la colonne A.
Merci

Message édité par: tarvel, à: 20/10/2005 14:53
 

tarvel

XLDnaute Occasionnel
Re:extraire numéro Tél d'une chaine de caractères

Bonjour Hervé...
J'ai essayé avec like...mais je n'y parviens pas...
Dim i As Integer
For i = Range('a65536').End(xlUp).Row To 1 Step -1
If cells(i, 1) Like '*## ## ## ## ##*' Then

cells(i, 0).Interior.ColorIndex = 6

End If

If cells(i, 0).Interior.ColorIndex = 6 Then cells(i, 1).Offset(0, 4)
Next i

Merci

Message édité par: tarvel, à: 20/10/2005 16:04
 

Hervé

XLDnaute Barbatruc
Re:extraire numéro Tél d'une chaine de caractères

re tarvel, gerard, le forum

une tentative de réponse, mais sans voir ton fichier c'est dur dur. :)

Sub toto()
Dim i As Integer
Dim texte As String
Dim j As Byte, cpt As Byte
Dim num As String

For i = 1 To Range('a65536').End(xlUp).Row
texte = Replace(Cells(i, 1), ' ', '')

j = 1
   
Do While j <> Len(texte) + 1 And cpt <> 10
&nbsp; &nbsp; &nbsp; &nbsp;
If IsNumeric(Mid(texte, j, 1)) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; num = num & Mid(texte, j, 1)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cpt = cpt + 1
&nbsp; &nbsp; &nbsp; &nbsp;
Else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; num = ''
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cpt = 0
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp; j = j + 1
&nbsp; &nbsp;
Loop
&nbsp; &nbsp; Cells(i, 5) = num
&nbsp; &nbsp; Cells(i, 5).NumberFormat = '0#'' ''##'' ''##'' ''##'' ''##'
&nbsp; &nbsp; num = ''
&nbsp; &nbsp; cpt = 0
Next i
End Sub


salut
 

tarvel

XLDnaute Occasionnel
Re:extraire numéro Tél d'une chaine de caractères

Re Hervé
j'ai essayé de comprendre la boucle...ça fonctionne bien...avec juste 2 choses :
1 - comme cells(i,4) =num et qu'ensuite num =''...il efface les données que j'avais parfois sur la colonne D ..donc je mets cells(1,5) par exemple..je ne vois pas autrement
2 - en fait il faudrait que le numéro 10 chiffres consécutifs soit effacé de la cellule d'origine.
Sinon Merci beaucoup encore une fois!!!

For i = 1 To Range('a65536').End(xlUp).Row
texte = Replace(cells(i, 1), ' ', '') 'texte = contenu de la cellule sans les espaces
j = 1
Do While j <> Len(texte) + 1 And cpt <> 10 'tant que j n'est pas égal à longueur texte +1 et cpt n'aligne pas 10 (10 chiffres pour le numéro de tél)
If IsNumeric(Mid(texte, j, 1)) Then 'si dans texte à partir de j il y a un nombre
num = num & Mid(texte, j, 1) 'donc num récupére ce nombre
cpt = cpt + 1 ' compteur de nombre augmente de 1 (jusqu'à 10)
Else
num = '' 'sinon num est vide et le compteur est à 0
cpt = 0
End If
j = j + 1 'on continue
Loop
cells(i, 4) = num
cells(i, 4).NumberFormat = '0#'' ''##'' ''##'' ''##'' ''##' 'format du numéro de tél
num = '' ' remise à zéro de la valeur de num et du compteur
cpt = 0
Next i
End Sub

Message édité par: tarvel, à: 20/10/2005 19:40
 

Hervé

XLDnaute Barbatruc
Re:extraire numéro Tél d'une chaine de caractères

Bonsoir tout le monde

C'est la premiere fois, que je poste une macro qui est ensuite commenté (impeccable) par le demandeur. :)

Ce qui prouve que tu as tout compris à la macro, et donc je me dis que je suis peut etre pas si mauvais pédagogue que je le pense.

merci à toi.

pour ta première remarque, je me suis appuyé sur ta demande initial (offset(0,4)), donc un décalage de 4 colonnes à droite, d'ou mon cells(i,5).

pour ta deuxième remarque, essaye de rajouter une ligne :

&nbsp; &nbsp; Loop
&nbsp; &nbsp; Cells(i, 1) = Replace(Cells(i, 1), num, '')
&nbsp; &nbsp; Cells(i, 4) = num
&nbsp; &nbsp; Cells(i, 4).NumberFormat = '0#'' ''##'' ''##'' ''##'' ''##'

voilà

salut tarvel
 

tarvel

XLDnaute Occasionnel
Re:extraire numéro Tél d'une chaine de caractères

Ca ne fonctionne pas avec la ligne
Cells(i, 1) = Replace(Cells(i, 1), num, '')

J'ai rajouté une boucle à la fin...mais j'ai un message d'erreur!!!

Je joins le fichier!!!

Encore merci pour ta pédagogie... Hervé
;) [file name=ExtraireTel.zip size=10121]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ExtraireTel.zip[/file]
 

Pièces jointes

  • ExtraireTel.zip
    9.9 KB · Affichages: 71

Hervé

XLDnaute Barbatruc
Re:extraire numéro Tél d'une chaine de caractères

Bonjour tarvel,

:)


En pièce jointe ton fichier modifié.

salut
[file name=ExtraireTel_20051021172808.zip size=8474]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ExtraireTel_20051021172808.zip[/file]
 

Pièces jointes

  • ExtraireTel_20051021172808.zip
    8.3 KB · Affichages: 90

tarvel

XLDnaute Occasionnel
Re:extraire numéro Tél d'une chaine de caractères

ok...ça marche nickel!!
En fait le problème venait du format de num
Pour le remplacer dans la cellule il fallait auparavant, le remettre en format numéro de tél
num = Format(num, '0#'' ''##'' ''##'' ''##'' ''##').
J'ai rajouter un offset pour déplacer les numéros de tél dans la bonne colonne!!!
Je joins le fichier terminé!!!
Merci encore pour tout!
:) [file name=ExtraireTel_20051022181618.zip size=11419]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ExtraireTel_20051022181618.zip[/file]
 

Pièces jointes

  • ExtraireTel_20051022181618.zip
    11.2 KB · Affichages: 137

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 180
dernier inscrit
Vcr