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

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    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 éminent sénior

    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
    Points : 20 147
    Points
    20 147
    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    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 averti
    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
    Points : 437
    Points
    437
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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 éminent sénior

    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
    Points : 20 147
    Points
    20 147
    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Ton problème est-il résolu?

+ 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