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

XL pour MAC Extraire uniquement un nombre de plus de 4 chiffres dans une cellule Répondre

juanc

XLDnaute Nouveau
Bonjour à tous !
Je suis nouveau sur Excel et je me retrouve face à une situation que je n'arrive pas à résoudre malgré mes nombreuses recherches, j'espère que vous pourrez m'aider à la solutionner car je commence à désespérer.
Dans ma feuille Excel, j'ai plusieurs cellules contenant du texte, des chiffres, et en général un nombre de plus de 4 chiffres.

Exemple de texte dans une cellule : "iPhone 64 GB, en très bon état, référence 243278, garantie de 12 mois".
La seule constante dans mes cellules est ce nombre de plus de 4 chiffres, il peut se retrouver n'importe dans la cellule et le mot « référence » n'est pas une constante, il ne se retrouve donc pas dans toutes les cellules.
je ne peux donc pas utiliser une formule qui effacerais uniquement les lettres car tous mes chiffres se retrouverait collé ensemble (Cela donnerait quelque chose comme 6424327812 dans cet exemple), et je ne peux pas non plus garder le nombre juste après le mot « référence » car ce mot n'apparaît pas dans toutes les cellules.
Je recherche donc une formule qui pourrait me permettre d'effacer tout le contenu de la cellule sauf les nombres de plus de 4 chiffres.
savez-vous si c'est quelque chose de faisable, et si oui comment y arriver SVP ?
Je vous remercie par avance de vos réponses !

Juan
 

vgendron

XLDnaute Barbatruc
bonjour
avec un fichier exemple ce serait déjà un bon début==> sinon, on va faire du code qui ne correspondra pas à ton environnement de travail
l'idée est de faire une fonction personnalisée à base de split
 

job75

XLDnaute Barbatruc
Bonjour juanc, bienvenue sur XLD, salut vgendron,

Fonction personnalisée sans Split :
VB:
Function Extract(x$)
Dim L%, i%, y$, deb%
L = 4 'limite à adapter
Extract = "" 'pour éviter les valeurs zéro
For i = 1 To Len(x) + 1
    y = Mid(x, i, 1)
    If deb = 0 Then If IsNumeric(y) Then deb = i
    If deb Then
        If Not IsNumeric(y) Then
            If i - deb > L Then Extract = Val(Mid(x, deb, i - deb)): Exit Function
            deb = 0
        End If
    End If
Next
End Function
Seule la 1ère valeur > 4 chiffres est récupérée.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    16 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une petite autre fonction: =SequenceN(Texte , N )
  • Texte est le texte à analyser
  • la séquence doit avoir plus de N chiffres
  • si plusieurs séquences de chiffres répondent aux critères alors on les affiche toutes (séparées par des points-virgules) pour ne pas en perdre
  • la longueur de la séquence de chiffres peut être très longue
nota : si N=0 alors toutes les séquences de chiffres sont extraites indépendamment de la taille.

VB:
Function SequenceN(ByVal Texte As String, N As Long) As String
'Texte est le texte à analyser  -  le résultat doit avoir PLUS de N caractères
Dim c, i&, s, r
   Texte = Texte & "/"
   For i = 1 To Len(Texte)
      c = Mid(Texte, i, 1)
      If c Like ("#") Then
         s = s & c
      Else
         If Len(s) > N Then r = r & ";" & s
         s = ""
      End If
   Next i
   If Len(r) > 0 Then SequenceN = Mid(r, 2)
End Function
 

Pièces jointes

  • juanc- extraire séquences chiffres- v.xlsm
    18.8 KB · Affichages: 2
Dernière édition:

Discussions similaires

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