IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraire uniquement un nombre de plus de 4 chiffres dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2022
    Messages : 1
    Par défaut Extraire uniquement un nombre de plus de 4 chiffres dans une cellule
    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

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    Hello,
    je te propose une fonction personnalisée en VBA utilisant les expressions régulières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function ExtBigNum(Cellule)
    Dim oRegExp As Object, oRegMatches As Object
    ExtBigNum = ""
    Set oRegExp = CreateObject("vbscript.regexp")
    oRegExp.Pattern = "\d{4,}"
    oRegExp.Global = True
    Set oRegMatches = oRegExp.Execute(Cellule)
    If oRegMatches.Count = 1 Then
       ExtBigNum = oRegMatches(0)
    End If
    Set oRegExp = Nothing
    Set oRegMatches = Nothing
    End Function
    Explication du motif \d{4,} : une suite de chiffres composée d'au moins 4 chiffres.
    La fonction ne renvoie rien si il n'y a pas de nombre répondant au motif ou si il y a plus d'un nombre répondant au motif.

    Nom : ExtBigNum.PNG
Affichages : 359
Taille : 6,9 Ko


    Ami calmant, J.P

  3. #3
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 282
    Par défaut
    Bonjour

    par formule avec Excel 365 ou 2021 (j'utilise la fonction SEQUENCE)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(SIERREUR(--STXT(A1;EQUIV(VRAI;ESTNUM(--STXT(SUBSTITUE(A1;" ";"x");SEQUENCE(NBCAR(A1)-3);4));0);SEQUENCE(20));""))
    SUBSTITUE(A1;" ";"x") remplace les espaces par des x
    STXT(...;SEQUENCE(NBCAR(A1)-3);4) va générer la liste de 4 caractères successifs
    ESTNUM(--...) va convertir cette liste en VRAI si numérique, FAUX sinon
    EQUIV(VRAI;...;0) va renvoyer la position du 1er VRAI (donc de la première série de 4 chiffres successifs)

    STXT(A1;...;SEQUENCE(20)) va tester toutes les chaines de texte à partir de la position déterminée
    MAX(SIERREUR(--...;"")) va renvoyer la plus grande (et donc la plus longue)

    il y a peut-être plus simple !

    Stéphane

Discussions similaires

  1. Réponses: 10
    Dernier message: 27/09/2017, 14h01
  2. [XL-2007] Problème macro, avec plus de 255 caractères dans une cellule
    Par jaquo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2016, 10h26
  3. Réponses: 6
    Dernier message: 24/12/2014, 20h45
  4. Extraire seulement des chiffres dans une cellule
    Par helkøwsky dans le forum Excel
    Réponses: 2
    Dernier message: 12/11/2010, 17h59
  5. Réponses: 7
    Dernier message: 27/01/2010, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo