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 :

Séparer une chaine de caractères [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut Séparer une chaine de caractères
    Bonjour/soir forum, tous et chacun,

    Longtime no see !
    Un tout petit problème se pose pour séparer une chaine de caractère. Le champ contient à la queue le loup: ville - province/état(occasionnel) - pays séparé par des virgules et espaces. Ces infos seront utilisées ailleurs.
    J'ai écris ce code et le problème est que cela change le contenu initial du champ. Ce que je ne souhaite pas pour des raisons de répétition. Quelqu'un a une sln simple pour remédier à cela.
    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
    23
    24
    25
    26
    27
     
    Sub separevillepays()
     
    Dim i As Integer
    Dim tableau() As String
    Dim LaCellule As Range
    Dim MaPlage As Range
    Dim Xls As Worksheet
     
        Set Xls = ThisWorkbook.Worksheets("Test")
        Set MaPlage = Range(Xls.Cells(1, 1), Xls.Cells(6, 1))
     
      '  MaPlage.Replace " ", ""   'enlève les espaces vides superflus
      '  MaPlage.Replace ",", " "  'remplace les virgules par des espaces vides
     
        For Each LaCellule In MaPlage.Cells
     
            tableau = Split(LaCellule)
     
            For i = 0 To UBound(tableau)  'peut y avoir ville/étatouprovince/pays
               Xls.Cells(LaCellule.Row, i + 2).Value = tableau(i)
               Debug.Print tableau(i)
            Next i
     
        Next LaCellule
     
    End Sub
    Merci à l'avance
    Bo

  2. #2
    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
    Bonsoir,
    pas assez clair pour moi
    le problème est que cela change le contenu initial du champ. Ce que je ne souhaite pas pour des raisons de répétition. Quelqu'un a une sln simple pour remédier à cela.
    si le séparateur est une virgule, ton code fonctionnera avec la modification sur la ligne du split
    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
    Sub SepareVillePays()
    Dim Xls As Worksheet
    Dim i As Integer
    Dim tableau() As String
    Dim LaCellule As Range, MaPlage As Range
     
    Set Xls = ThisWorkbook.Worksheets("Test")
    Set MaPlage = Xls.Range(Xls.Cells(1, 1), Xls.Cells(6, 1))
    For Each LaCellule In MaPlage
        tableau = Split(LaCellule, ",")
        For i = 0 To UBound(tableau)  'peut y avoir ville/étatouprovince/pays
           Xls.Cells(LaCellule.Row, i + 2).Value = Trim(tableau(i))
        Next i
    Next LaCellule
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut Séparer une chaine de caractère
    Bonjour Mercatog, forum,

    Pas tjrs clair en effet. Je ne voulais pas altérer le contenu de la plage de départ. Les repères ne sont plus les mêmes lorsque l'algorithme est répété. Je ne crois pas être beaucoup plus limpide ici...

    Le split avec la virgule est la sln, a regarder à nouveau l'exemple de split et de join de SilkyRoad (Manip les chaines de caractère...) j'aurai du me douter.

    Ça fait exactement ce que je souhaitais, merci!c'est très apprécié!

    Bo

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

Discussions similaires

  1. Séparer une chaine de caractères sans split
    Par ndsaerith dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/05/2011, 16h05
  2. [MySQL] Séparer une chaine de caractères dans ma table
    Par keokaz dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/11/2008, 19h39
  3. [BO XI R2] Séparer une chaine de caractère
    Par perrine1985 dans le forum Deski
    Réponses: 2
    Dernier message: 16/04/2008, 10h01
  4. Séparer une chaine de caractère
    Par fabienschmitt dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/11/2006, 14h57
  5. Réponses: 15
    Dernier message: 23/01/2006, 04h35

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