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

Excel Discussion :

Extraire une chaîne de caractères d'une chaîne


Sujet :

Excel

  1. #1
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut Extraire une chaîne de caractères d'une chaîne
    Bonjour,

    Je chercher à extraire une chaîne de caractères contenue dans une chaîne de caractères

    En fait j'ai une liste d'adresses IP commençant par 10.29.***.yyy
    Je cherche à récupérer dans une autre liste la valeur ***
    En PHP il y aurait eu la fonction "explode" qui permet de découper une chaîne en plusieurs sous chaîne, pour cela je me serais servi du point comme d'un caractère de séparation.

    Mais en Excel je ne vois pas comment faire.

    Si quelqu'un peut m'aider, ce serait très sympa !

    @+

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Si ton I.P. est en A1

    =STXT(A1;7;3)

    puis tu tires ta cellule vers le bas pour la reproduire.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Si tu connais par avance parfaitement le format de tes donnes, tu peux utiliser la fonction STXT

    Ex: tu as tes ip dans la colonne A
    tu tapes dans une nouvelle colonne:
    =STXT(A1;7;3)

    et tu l'etires dans la colonne

    (7= debut du morceau a prendre, 3= longueur)

    (regarde dans l'aide d'excel si besoin)

    Cordialement,

    Benjibast

    (marc m'a devance )

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme souvent plusieurs solutions possibles.

    Une parmi les autres :

    en VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mchain2 = mid(mchain1, 7 , 3)
    Avec une formule Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(DROITE(A1;7);3)
    ou comme l'a indiqué Benjibast :

    nos réponses se sont croisées.

  5. #5
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Merci pour vos réponses si rapides

    Cependant, je ne sais pas par avance si la valeur *** fait 1, 2 ou 3 caractères.
    Donc votre solution marche que si cette valeur fait 3 caractères


    Il faudrait une formule qui me permette de couper la chaîne sur les points "." Mais je ne trouve pas cette formule magique

    Merci de votre aide =)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans ce cas :
    'dl = n° dernière ligne à traiter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dl = 100
    For n = 2 to dl
    text = Cells(n, 1)
        Tableau = Split(text, ".")
     
        For i = 0 To UBound(Tableau)
            If i = 2 Then
            Cells(n, 2) = Tableau(i)
            End If
        Next i
    Next n

  7. #7
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Rolala j'ai honte

    Je ne sais pas où mettre ce code(j'ai ouvert la fenêtre de VB) je pense que je dois coller le code dans la page qui porte le même nom que ma page sous Excel ; mais je ne sais pas comment l'appeler :s

    Désolé

  8. #8
    Invité
    Invité(e)
    Par défaut
    En l'occurence le plus simple est de coller ce code sur la feuille contenant les données.

    Outils, Macro, Visual Basic Editor puis sélectionner la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Sep_text()
     
    dl = 100
    For n = 2 to dl
    text = Cells(n, 1)
        Tableau = Split(text, ".")
     
        For i = 0 To UBound(Tableau)
            If i = 2 Then
            Cells(n, 2) = Tableau(i)
            End If
        Next i
    Next n
     
    End Sub
    Si la cellule d'affectation du résultat se trouve sur une autre feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    au lieu de 
     
    Cells(n, 2) = Tableau(i)
     
    par exemple
     
    Sheets("Feuil2").Cells(n, 2) = Tableau(i)

  9. #9
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    D'accord merci
    mais pour exécuter ce code et qu'il renvoit le résultat dans une colonne souhaitée, que dois-je faire ?

    Désolé, je débute là dedans et je n'ai pas le temps de rester apprendre les bases tout seul

    merci :s

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Sans passer une macro, mais si tes 6 premiers caractères sont constants :
    I.P. toujours en A1
    =GAUCHE(STXT(A1;7;NBCAR(A1)-5);TROUVE(".";STXT(A1;7;NBCAR(A1)-5);1)-1)

  11. #11
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Super !!!

    C'est exactement ce qu'il me fallait !

    Y'a pas à dire, c'est vraiment bisar la programmation en excel ^^

    Merci à tous !

  12. #12
    Invité
    Invité(e)
    Par défaut
    Re Dj-julio,

    Soit utiliser la formule de Marc56, soit pour exécuter la macro :

    1) Outils, Macro, Macros puis Exécuter

    2) Outils, Macro, Macros puis Options et choisir un caractères qui permettra de lancer la macro par les touches. Exemple Ctrl et A.

    3) Affichage puis Barres d'outils puis cliquer sur Barre d'outils contrôle.
    Cliquer sur "Bouton de Commande" et dessiner un rectangle sur la feuille.
    Avec un clic droit sur le bouton vous allez pouvoir changer le texte et affecter la macro au bouton.

  13. #13
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Merci jacques_jean pour la précision !

    Bonne fin de journée à tous

  14. #14
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    893
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 893
    Points : 833
    Points
    833
    Par défaut Avec la beauté des fonctions d'Excel
    Pour tous les cas de longueur à la condition d'avoir 3 points dans la chaine placée en F3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1));TROUVE(".";F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1)))-TROUVE(".";F3;1+TROUVE(".";F3;1))-1)
    avec gestion des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(VRAI=ESTERREUR(STXT(F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1));TROUVE(".";F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1)))-TROUVE(".";F3;1+TROUVE(".";F3;1))-1));"erreur";STXT(F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1));TROUVE(".";F3;1+TROUVE(".";F3;1+TROUVE(".";F3;1)))-TROUVE(".";F3;1+TROUVE(".";F3;1))-1))

    simple, non ?
    Vive VBA, c'est plus clair.

    Qui propose pour 33 points ?

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

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Rechercher une chaîne de caractère dans une série de fichier
    Par Edoxituz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2006, 12h51
  3. Réponses: 7
    Dernier message: 14/12/2005, 09h53
  4. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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