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

XL 2021 Extraire et mettre en col G le premier N° trouvé si son premier chiffre est différent de 0

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous

Je n'arrive pas à faire la bonne formule pour mon besoin :
En colonne A dans les textes, il y a des n° de tel.
Mon besoin (formule en Col G)
Extraire de la Col A et mettre en col G le premier N° trouvé si son premier chiffre est différent de 0
Résultat attendu en col I

Auriez-vous la bonne formule ?
En cas, je joins le petit fichier test.
Merci à toutes et à tous,
Je continue mes recherches....
 

Pièces jointes

  • tel test.xlsm
    95.7 KB · Affichages: 4
Solution
Voyez le fichier joint avec cette fonction VBA :
VB:
Function Extrait(x As String) As Double
Dim i%, deb%, y$
For i = 1 To Len(x)
    If deb = 0 And IsNumeric(Mid(x, i, 1)) Then deb = i
    If deb > 0 And Not IsNumeric(Mid(x, i, 1)) Then
        If i - deb >= 10 Then
            y = Mid(x, deb, i - deb)
            If Left(y, 1) = "0" Then y = 33 & Mid(y, 2)
            Extrait = CDbl(y)
            Exit Function
        End If
        deb = 0
    End If
Next
End Function
Formule en G2 =Extrait(A2)

Salut TooFatBoy.

xUpsilon

XLDnaute Accro
Bonjour,

Dans ton fichier exemple il y a quelques soucis :
- premier numéro trouvé : numéro de téléphone ou nombre quelconque ? Parce que sur la ligne 2 on dirait un numéro de téléphone, mais ligne 6 on dirait le nombre qui suit "CP"
- si son premier chiffre est différent de 0 : il faut renvoyer le numéro seulement si il ne commence pas par 0, ou il faut renvoyer le numéro sans le premier 0 ?

Bonne journée,
 

Usine à gaz

XLDnaute Barbatruc
Bjr xUpsilon
Merci d'être là.
Je ne comprends pas ton interrogation
Par exemple :
ligne 2
Fiona : xxxxxxxxx - chalifert (77144) - IAD - Commune : - CP : - Tel1 : 0222222222 - Tel2 : 0 - Mail perso : - Mail Pro : - 12-06-23 19:15 : RendezVous pour le : 15 06 2023 09:00 - RAS
Le 1er n° est 0222222222
ligne 6
Fiona : xxxxxxxxx Thierry - Safti - Commune : - OutreMer Martinique - décalage horaire -6 h - CP : 562699999999 - Tel1 : 0699999999 - Tel2 : 0 - Mail perso : - Mail Pro : - 05-06-23 14:14 : RendezVous pour le : 15 06 2023 15:00 - RAS
Le 1er n° est 562699999999
 

job75

XLDnaute Barbatruc
Bonjour Lionel, xUpsilon,

Ce n'est pas clair en effet.

En lignes 2 3 4 tu vas chercher des numéros de téléphone qui commencent par zéro.

Et en lignes 5 et 6 tu prends les numéros des CP...

A+
 

Usine à gaz

XLDnaute Barbatruc
Bjr Gérard
"En lignes 2 3 4 tu vas chercher des numéros de téléphone qui commencent par zéro. Et en lignes 5 et 6 tu prends les numéros des CP..."
J'ai du encore mal m'expliquer

Je voudrais juste extraire le 1er n° trouvé :
Par exemple :
ligne 2
Fiona : xxxxxxxxx - chalifert (77144) - IAD - Commune : - CP : - Tel1 : 0222222222 - Tel2 : 0 - Mail perso : - Mail Pro : - 12-06-23 19:15 : RendezVous pour le : 15 06 2023 09:00 - RAS
Le 1er n° est 0222222222
ligne 6
Fiona : xxxxxxxxx Thierry - Safti - Commune : - OutreMer Martinique - décalage horaire -6 h - CP : 562699999999 - Tel1 : 0699999999 - Tel2 : 0 - Mail perso : - Mail Pro : - 05-06-23 14:14 : RendezVous pour le : 15 06 2023 15:00 - RAS
Le 1er n° est 562699999999
 

Usine à gaz

XLDnaute Barbatruc
Bonjour,


Je dirais que oui non.

Je dois mal vieillir car je t'ai compris dès #1...


[edit]
Ah non, au temps pour moi : j'avais compris qu'il ne fallait regarder que tel1 et tel2, mais pas cp...
[/edit]
Bjr à toi
tel1, tel2,cp sont bien contenus dans chaque cellule mais... C'est uniquement le 1er N° qu'il faudrait chercher et l'extraire si son premier chiffre est différent de 0
Mais je pense que ma demande n'est pas facile à réaliser,
 

job75

XLDnaute Barbatruc
Voyez le fichier joint avec cette fonction VBA :
VB:
Function Extrait(x As String) As Double
Dim i%, deb%, y$
For i = 1 To Len(x)
    If deb = 0 And IsNumeric(Mid(x, i, 1)) Then deb = i
    If deb > 0 And Not IsNumeric(Mid(x, i, 1)) Then
        If i - deb >= 10 Then
            y = Mid(x, deb, i - deb)
            If Left(y, 1) = "0" Then y = 33 & Mid(y, 2)
            Extrait = CDbl(y)
            Exit Function
        End If
        deb = 0
    End If
Next
End Function
Formule en G2 =Extrait(A2)

Salut TooFatBoy.
 

Pièces jointes

  • tel test.xlsm
    101.9 KB · Affichages: 2

Usine à gaz

XLDnaute Barbatruc
Re-Bjr Gérard
Il faut que je renouvelle mon stock de "MERCIS"
Nickel ta fonction et elle va beaucoup me servir, comme tout ce que tu as la gentillesse de me donner avec autant de patience. (lol, on a du se connaître dans une autre vie)

J'avais compris que par simple formule ce serait peut-être pas possible.

Ta fonction est super
Alors SUPER, SUPER MERCI
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…