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 :

Excel vba recupere une chaine de caractere


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut Excel vba recupere une chaine de caractere
    Bonjour,
    J'aimerais savoir comment je peux faire en vba pour récupérer automatiquement les valeurs entre parenthèses par exemple voir ci dessous (EC) ou (EC AC) qui correspond à contrat eau et contrat assainissemnt car après selon la valeur je veux remplir deux autres colonnes que j'appellerais eau et assainissement par oui ou non.
    Merci pour votre aide et bonne journée

    Communes
    ANDERNOS LES BAINS (EC)
    ARES (EC)
    AUDENGE (EC AC)

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Bonjour,

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Cible As String
     
    Cible = "ANDERNOS LES BAINS (EC)"
    MsgBox Mid(Cible, InStr(1, Cible, "("))
     
    Cible = "ARES (EC)"
    MsgBox Mid(Cible, InStr(1, Cible, "("))
     
    Cible = "AUDENGE (EC AC) "
    MsgBox Mid(Cible, InStr(1, Cible, "("))

    et une deuxième possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim Tableau() As String
        Dim i As Integer
     
        Tableau = Split("ANDERNOS LES BAINS (EC)", "(")
        MsgBox "(" & Tableau(UBound(Tableau))
     
        Tableau = Split("ARES (EC)", "(")
        MsgBox "(" & Tableau(UBound(Tableau))
     
        Tableau = Split("AUDENGE (EC AC) ", "(")
        MsgBox "(" & Tableau(UBound(Tableau))
    bonne journée
    michel

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut
    Merci Michel,
    mais j'ai 380 lignes et ça me paraît difficile de faire ligne par ligne...enfin j'aurais pensé avec une boucle do while pouvoir faire quelque chose mais je vois pas!!

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Je suppose que les données sont dans la colonne A

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub sc5()
    Derligne = [A65536].End(xlUp).Row
    On Error Resume Next
        For i = 1 To Derligne
            Cells(i, 2) = Split(Cells(i, 1), "(")
            a = Split(Cells(i, 1), "(")(1)
            b = Mid(a, 1, Len(a) - 1)
            Cells(i, 3) = Split(b, " ")
            Cells(i, 4) = Split(b, " ")(1)
            a = ""
            b = ""
        Next i
    End Sub

    A peaufiner

    JP

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    en colonne A, données, en colonne B: Eau, en colonne C: assainissement
    à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim LastLig As Long, i As Long
    With Sheets("Feuil3")           'à adapter
        LastLig = .Cells(Rows.Count, "A").End(xlUp).Row
        For i = 2 To LastLig
            If InStrRev(.Range("A" & i), "EC") > 0 Then .Range("B" & i) = "OUI"
            If InStrRev(.Range("A" & i), "AC") > 0 Then .Range("C" & i) = "OUI"
        Next i
    End With

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    mais j'ai 380 lignes et ça me paraît difficile de faire ligne par ligne...enfin j'aurais pensé avec une boucle do while pouvoir faire quelque chose mais je vois pas!!
    Ta question initiale parle d'extractions de données, pas de boucles....

    La gestion des boucles dans Excel :
    http://silkyroad.developpez.com/vba/boucles/

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut
    Merci pour les réponses!!

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

Discussions similaires

  1. vba excel recuperer une chaine de caractere
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/09/2010, 19h32
  2. Recuperer une chaine de caractere d'un fichier *.txt
    Par beubeustand dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 18/09/2008, 00h22
  3. pb pour recuperer une chaine de caractere
    Par seb221 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/07/2008, 14h40
  4. recuperer une chaine de caractere aleatoire
    Par ajupa dans le forum Général Python
    Réponses: 2
    Dernier message: 20/12/2007, 19h24
  5. forcer le input a recuperer une chaine de caractere
    Par okparanoid dans le forum Général Python
    Réponses: 3
    Dernier message: 08/07/2007, 01h00

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