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 :

Macro: extraire des caractères qui se trouvent entre deux $


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Macro: extraire des caractères qui se trouvent entre deux $
    Bonjour,

    je cherche une macro qui me permet d'extraire les caractères qui se trouvent entre deux $ ou apres le deuxième $

    Dans la colonne A et B j'ai

    $B$60 $R$4
    $A$98 $R$4
    $B$72 $G$4
    $C$63 $R$4
    $B$75 $M$4
    $D$105 $AB$46
    $B$208 $R$461

    J'ai besoin d'extraire dans la colonne C les chiffres qui se trouvent apres le 2ème $ dans le colonne A ex. 60, 98, 72...105,208 et besoin d'extraire dans la colonne D les lettres qui se trouvent entre les 2 $ dans la colonne B ex. R, R,M

    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(A2;CHERCHE("$";A2;2)+1;10)
    [EDIT]
    Ou plutôt
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Femme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour

    je suis d'acord avec la formule mais j'ai besoin d'une macro pour automatiser cela. Sinon avec les formules stxt et droite j'arrive à le faire manuellement mais j'essaie d'integrer ca dans une macro...

    merci encore

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Regarde la pièce jointe
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 32
    Points : 54
    Points
    54
    Par défaut
    Salut,


    Tu peux utiliser "split"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau = split(Cells("A2").value, "$")
    Ensuite tu as les valeurs que tu souhaites dans tableau(0) et tableau(1).

  6. #6
    Membre à l'essai
    Femme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par ZimCri Voir le message
    Salut,


    Tu peux utiliser "split"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau = split(Cells("A2").value, "$")
    Ensuite tu as les valeurs que tu souhaites dans tableau(0) et tableau(1).
    Quand je mets ça il m'affiche

    Erreur d'exécution 5:
    Argument ou appel de procédure incorrect (

  7. #7
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu as regardé le fichier que je t'ai envoyé ?

  8. #8
    Membre à l'essai
    Femme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    oui mais dedans il n'y a pas de macro... je vois que des formules dans les cases...

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Normalement le split marche mais sinon tu fais comme ca :

    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
    16
    17
    18
    19
    20
    21
    22
     
    Dim PositionDollar2 AS Long
    Dim PremierMembre AS String
    Dim DeuxiemeMembre AS String
    Dim i As Long
     
    i=1 'mets i= premiere ligne
    Do While Len(cells(i,1))>0
     
    PositionDollar2 = InStrRev(Cells(i,1),"$")
     
    'On utilise la fonction Mid (Cellule contenant le string, position de debut, 'optionnal longueur de la chaine a extraire) pour extraire une chaine
     
    PremierMembre = Mid(Cells(i,1), 2, PositionDollar2 - 2)
    DeuxiemeMembre = Mid(Cells(i,1), PositionDollar2 +1)
     
    Cells(i,3) = DeuxiemeMembre
    Cells(i,4) = PremierMembre
     
    i = i + 1
     
    Loop

  10. #10
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Dans l'éditeur Visual Basic, tu créés un nouveau module et tu copies ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function TraiteA(Valeur As String) As String
        chaine = Split(Valeur, "$")
        TraiteA = chaine(2)
    End Function
     
    Function TraiteB(Valeur As String) As String
        chaine = Split(Valeur, "$")
        TraiteB = chaine(1)
    End Function
    Tu retrouveras ces fonctions via Insertion => formule => personnalisée

  11. #11
    Membre à l'essai
    Femme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par jazzybluesy Voir le message
    Normalement le split marche mais sinon tu fais comme ca :

    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
    16
    17
    18
    19
    20
    21
    22
     
    Dim PositionDollar2 AS Long
    Dim PremierMembre AS String
    Dim DeuxiemeMembre AS String
    Dim i As Long
     
    i=1 'mets i= premiere ligne
    Do While Len(cells(i,1))>0
     
    PositionDollar2 = InStrRev(Cells(i,1),"$")
     
    'On utilise la fonction Mid (Cellule contenant le string, position de debut, 'optionnal longueur de la chaine a extraire) pour extraire une chaine
     
    PremierMembre = Mid(Cells(i,1), 2, PositionDollar2 - 2)
    DeuxiemeMembre = Mid(Cells(i,1), PositionDollar2 +1)
     
    Cells(i,3) = DeuxiemeMembre
    Cells(i,4) = PremierMembre
     
    i = i + 1
     
    Loop


    Merci beaucoup à tout le monde!!! ça a bien fonctionné )

    merci encore une fois

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

Discussions similaires

  1. [MySQL] afficher les données qui se trouvent entre deux dates
    Par abdelkarim_1987 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 04/10/2013, 08h50
  2. requête pour extraire des caractères d'un champ
    Par hellyjlj dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/11/2007, 15h32
  3. Extraire des caractères d'une chaine
    Par fabpeden dans le forum C
    Réponses: 5
    Dernier message: 07/05/2007, 10h09
  4. Extraire des caractères spéciaux de la base
    Par Samrock dans le forum Langage
    Réponses: 17
    Dernier message: 28/05/2006, 18h13
  5. Comment extraire des caractères d'une chaine ?
    Par Powa87 dans le forum Langage
    Réponses: 16
    Dernier message: 01/01/2005, 19h00

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