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 un numéro d'une cellule remplie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 46
    Par défaut extraire un numéro d'une cellule remplie
    Bonjour,

    Je cherche à récupérer le premier numéro de 8 caractères au milieu d'un contenu plus vaste ( de chiffres et de lettres).

    Ex : 3454 okca marche, unifemirvlqn,fgji 455304Z4I5203A2IU 34564890 lr gjnslridunvrsli
    Je veux récupérer uniquement 34564890.
    Sachant que :
    - je dois récupérer cette donnée pour plusieurs lignes
    - ce fameux numéro à 8 chiffres n'est jamais au même endroit dans la chaîne
    - il peut y avoir différents numéros de 8 chiffres dans la cellule mais je souhaite le premier.

    Merci par avance pour votre aide.
    Rose

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    En partant de ton exemple, en supposant que l'on a bien des espaces qui séparent les parties du texte dont le fameux numéro,
    voilà un Exemple en A1 avec le texte donnée (3454 okca marche, unifemirvlqn,fgji 455304Z4I5203A2IU 34564890 lr gjnslridunvrsli) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
     
        MonNum = Split(Cells(1, 1), " ")
        For i = LBound(MonNum) To UBound(MonNum)
            If IsNumeric(MonNum(i)) And Len(MonNum(i)) = 8 Then
                MsgBox MonNum(i)
                Exit For
            End If
        Next
     
    End Sub
    Edit petite modif
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Une méthode peu élégante (mais on fait c'qu'on peut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Num8(Test As String) As Long
        For Num8 = 1 To Len(Range("A1") - 7
            If IsNemeric(Mid(Range("A1"), C, 8)) Then Exit For
        Next Num8
        If Num8 > Len(Range("A1") - 7 Then Num8 = 0
    End Function

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Salut Menhir,

    Attention une petite faute dans ton code : IsNemeric à la place de IsNumeric

    amicalement
    Ryu

    Et je viens d'en voir une dans mon texte c'est corrigé
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu as raison : j'ai oublié de préciser que j'ai codé ça à l'arrache directement sur le forum.
    Ce n'est pas testé et il y aura donc sans doute un peu de débugage à faire (mais on a le concept de base).

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir sinon une petite initiation au "reg.expand"familièrement appelé regex
    cela te trouvera ta/tes serie(s) dans n'importe quelle condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Dim texte As String
        texte = "dssdvdsvgsd455d6dddd15dd dddd45556987 kkdkdkdkd452d"
        With CreateObject("VBScript.RegExp"): .Pattern = "(\d{8})": Set matchs = .Execute(texte): End With
        MsgBox matchs(0)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire le contenu d'une cellule dans un fichier excel
    Par JuniorBI dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 28/09/2010, 12h03
  2. Réponses: 3
    Dernier message: 19/04/2010, 16h18
  3. [XL-2007] Extraire la valeur d'une cellule
    Par jp222 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/08/2009, 08h55
  4. extraire un mois d'une cellule texte
    Par plume14600 dans le forum Excel
    Réponses: 3
    Dernier message: 02/11/2008, 14h50
  5. Tester l'existence d'une cellule remplie
    Par Thierry_94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2007, 21h25

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