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 :

recherche saut de ligne dans une même cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 66
    Points
    66
    Par défaut recherche saut de ligne dans une même cellule
    Bonjour à tous,

    Je vais tâché d'être clair :

    J'ai une cellule comprenant 3 chaines de caractères séparées par un saut de ligne.
    dans ma cellule [A1], j'ai donc :
    adresse1
    adresse2
    adresse3

    Et je souhaiterai repérer les saut de ligne dans cette cellule pour couper coller sur les colonnes de droite : adresse1 en [B1] puis adresse2 en [C1] et adresse3 en [D1].

    J'ai commencé ce code mais j'ai un peu de mal avec les chaines de caractères...

    Comment continuer mon code ?
    A+

    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
    Sub test_Rech_sautDeLigne()
     
    'utilisation de la fonction InStr pour renvoyer la position de x2 sauts de ligne dans une même cellule
     
    Dim SearchString, SearchChar, MyPos1, MyPos2
    SearchString = Range("A1").Value ' cellule dans laquelle s'effectue la recherche de saut de ligne.
    SearchChar = Chr(10)  ' Recherche la chaîne "P".
     
    ' recherche le 1er saut de ligne (en respectant les majuscules et les minuscules)
    MyPos1 = InStr(SearchString, SearchChar)    ' Renvoie la position du 1er saut de ligne.
     
    ' recherche le 2ème saut de ligne, à partir du 1er (en respectant les majuscules et les minuscules)
    MyPos2 = InStr(MyPos1, SearchString, SearchChar)
     
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Ensuite? la fonction Mid. Et pense à typer tes variables...
    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
    Sub test_Rech_sautDeLigne()
     
    'utilisation de la fonction InStr pour renvoyer la position de x2 sauts de ligne dans une même cellule
     
    Dim SearchString As String, SearchChar As String, MyPos1 As Integer, MyPos2 As Integer
    Dim s1 As String, s2 As String, s3 As String
    SearchString = Range("A1").Value ' cellule dans laquelle s'effectue la recherche de saut de ligne.
    SearchChar = vbLf  ' Recherche la chaîne "P".
     
    ' recherche le 1er saut de ligne (en respectant les majuscules et les minuscules)
    MyPos1 = InStr(1,SearchString, SearchChar)    ' Renvoie la position du 1er saut de ligne.
     
    ' recherche le 2ème saut de ligne, à partir du 1er (en respectant les majuscules et les minuscules)
    MyPos2 = InStr(MyPos1, SearchString, SearchChar)
     
    s1 = Mid$(SearchString, 1, MyPos1 - 1)
    s2 = Mid$(SearchString, MyPos1 + 1, MyPos2 - 1)
    s3 = Mid$(SearchString, MyPos2 + 1)
    End Sub
    A mettre au point.

    PGZ

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    Bonjour,
    grand fan de la fonction Split, je propose cette approche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim a As Variant
    a = Split(Range("A1").value,chr(10))
    Range("A1").value = a(0)
    Range("B1").value = a(1)
    Range("C1").value = a(2)

  4. #4
    Membre régulier
    Homme Profil pro
    Formateur & Dévrloppeur en Bureautique
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur & Dévrloppeur en Bureautique

    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 85
    Points
    85
    Par défaut
    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
    Dim cel As Range
    Set cel = Range("A1")
     
    n = Len(cel)
    c = 2
    x = 1
    y = 1
    For i = 1 To n
        If Mid(cel, i, 1) = Chr(10) Then
            x = y
            y = i + 1
            Cells(1, c) = Mid(cel, x, y - x - 1)
            c = c + 1
        End If
    Next
    Cells(1, c) = Mid(cel, y, i - y)
    Set cel = Nothing

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyPos1 = InStr(SearchString, SearchChar)
    La suite du code coule de source

    comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    s1 = Mid$(SearchString, 1, MyPos1 - 1)
    s2 = Mid$(SearchString, MyPos1 + 1, MyPos2 - 1)
    s3 = Mid$(SearchString, MyPos2 + 1)
     
     
    Range ( "B1") = s1
    Range ( "C1") = s2
    et .

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Merci à tous!

    Je suis partie sur le code de CODEFACIL :


    cependant j'obtiens une erreure lors de l'exé : erreur d'éxecution 9 : l'indice nappartient pas à la sélection.
    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
    Sub test()
     
    'Dim a As Variant
    'Dim i As Integer
     
    For i = 0 To 10
     
    a = Split(Range("J1").Offset(i, 0).Value, Chr(10))
    Range("K1").Offset(i, 0).Value = a(0)
    Range("L1").Offset(i, 0).Value = a(1)
    Range("M1").Offset(i, 0).Value = a(2)
     
    Next i
     
    End Sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/03/2013, 20h46
  2. Plusieurs lignes dans une même cellule de JTable
    Par Yann_69 dans le forum Composants
    Réponses: 2
    Dernier message: 21/06/2012, 11h19
  3. [Lazarus] Stringgrid et plusieurs lignes dans une même cellule
    Par dav999 dans le forum Lazarus
    Réponses: 2
    Dernier message: 12/11/2010, 22h53
  4. recherche saut de ligne dans une cellule
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/03/2009, 17h06
  5. Saut de Ligne dans la même Cellule Excel
    Par faressam dans le forum Excel
    Réponses: 3
    Dernier message: 24/04/2008, 13h30

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