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 string en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut séparer une string en VBA
    Bonjour,

    J'ai vraiment besoin d'aide. Cela fait 3 jours que je bûche sur un simple problème.
    Je dois faire du code qui fera des manipulations sur des string.

    Dans excel, j'ai une ligne qui contient:

    46 (47, 48, 49, 50, 51), Logeron

    Je dois arriver à, sur plusieurs lignes:

    46, Logeron
    47, Logeron
    48, Logeron
    49, Logeron
    50, Logeron
    51, Logeron.

    Les lignes doivent se créer automatiquement en dessous de la première.

    J'ai bidouiller avec un paquet de fonction, j'y suit presque mais il me manque de temps.

    Merci de votre aide.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Sub manipul()
    Dim sStr As String
    Dim pos As Long
    Dim rcol As Range
    Dim rcell As Range
    Dim x As Variant
    Dim nobat As String
    Dim adresse As String
    Dim muni As String
    Dim codepostal As String
    Dim pospar As Long
    Dim y As Variant
     
    Set rcol = Range("b1343", "b1350")
     
    For Each rcell In rcol
        pos = InStr(1, rcell, "(", vbTextCompare)
     
        'Si j'ai trouvé la (
        If pos <> 0 Then
            rcell.Select
            nobat = Range("A" & rcell.Row)
            muni = Range("C" & rcell.Row)
            codepostal = Range("D" & rcell.Row)
            x = Split(rcell, "(")
     
            'Ajout des lignes
            For i = 0 To (UBound(x)) - 1
     
                ActiveCell.Offset(1).EntireRow.Insert
     
                Range("A" & (rcell.Row + 1)).Value = nobat
     
     
                'Paranthese de gauche
                pospar = InStr(1, x(i), "(", vbTextCompare)
     
                If pospar <> 0 Then
                    Range("B" & (rcell.Row + 1)).Value = Left(x(i), pospar - 1)
                Else
     
                    pospar = (InStr(1, x(i), ")", vbTextCompare))
     
                    'Paranthese de droite
                    If pospar <> 0 Then
                        Range("B" & (rcell.Row + 1)).Value = Right(x(i), pospar - 1)
                    Else
                        y = Split(Range("B" & (rcell.Row + 1)).Value = x(i + 1), ",")
                    End If
                End If
     
                'Range("B" & (rcell.Row + 1)).Value = Left(x(i), InStrRev(x(i), "(", , vbTextCompare) - 1)
                Range("C" & (rcell.Row + 1)).Value = muni
                Range("D" & (rcell.Row + 1)).Value = codepostal
     
            Next i
     
        End If
     
    Next
     
     
    End Sub

  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
    Une proposition selon ton explication
    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
    Dim LastLig As Long, i As Long
    Dim j As Byte
    Dim Str As String
    Dim Tb
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")                               ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 2 Step -1
            Str = .Range("A" & i).Value
            Str = Replace(Str, " (", ", ")
            Str = Replace(Str, ")", "")
            Tb = Split(Str, ",")
            If UBound(Tb) > 1 Then
                .Rows(i).Copy
                .Rows(i & ":" & i + UBound(Tb) - 2).Insert
                Application.CutCopyMode = False
                For j = 0 To UBound(Tb) - 1
                    .Range("A" & i + j).Value = Trim(Tb(j)) & ", " & Tb(UBound(Tb))
                Next j
            End If
        Next i
    End With

Discussions similaires

  1. passer une string Excel VBA vers C++
    Par tallent_e dans le forum Visual C++
    Réponses: 9
    Dernier message: 29/04/2011, 00h59
  2. [VBA-E] Parcourir les Items d'un ComboBox à la recherche d'une string
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/12/2006, 19h23
  3. [vba] convertir une string en date
    Par megapacman dans le forum Access
    Réponses: 1
    Dernier message: 11/09/2006, 15h46
  4. [VBA]sortir un nombre d' une string
    Par megapacman dans le forum Access
    Réponses: 7
    Dernier message: 19/04/2006, 13h11
  5. [vba]modifier un caratère dans une string
    Par megapacman dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 18h12

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