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 :

concaténation de ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1
    Par défaut concaténation de ligne
    Bonjour ,
    merci à ceux qui ont bien voulu me répondre et me permettre d'être plus précis dans ma question ci dessous rectifiée.

    j'ai besoin de créer un code pour concaténer des lignes selon le modèle suivant (nombre de ligne variable, une ligne vide entre chaque groupe à concaténer). Mon objectif est de concaténer le contenu (alphanummérique) des cellules contenues dans une même colonne.

    La colonne fait apparaitre des groupes de lignes démarquées par des lignes vides. Le nombre de lignes dans ces groupes est variable car le fichier Excel a été généré par copier/coller d'un fichier Word dont les "retours charriot" ont été traduits par une ligne sous Excel.

    Effectivement les lignes qui contenaient les éléments à concaténer dans la première ligne du groupe devront être supprimées.

    avant concaté----> après concaté

    abcd ----> abcd

    efg ----> efghijklm
    hij
    klm

    no ------> nopqrst
    pq
    rst

    Pouvez vous m'aider ?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut hseconsult et le forum
    données parcellaires, utilisation du mot "concaténer" dans un sens bizarre, un coup de baguette magique et la boule de cristal fournira la réponse ?

    Fait lire ton sujet à quelqu'un qui ne connaît rien au problème et écoute sa réponse.

    On ne concatène pas une ligne, mais du texte issu de ou plusieurs cellules :
    ton "exemple" représente le contenu d'une cellule ? de colonnes ?
    Pourquoi dans certain cas on s'occupe d'une, deux ou trois lignes ?
    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Si j'ai bien compris :

    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
    Sub Essai()
    'Indiquer le n° de la 1ère ligne de données
    pl = 2
    'Indiquer le n° de la colonne de données
    clo = 1
    'Indiquer le n° de la colonne de destination des données concaténées
    cld = 2
    'Indiquer le n° de la 1ère ligne de copies des données concaténées
    pld = 2
     
    dl = Range(Cells(65536, clo), Cells(65536, clo)).End(xlUp).Row
    txt = Cells(pl, 1)
     
    For i = pl + 1 To dl + 1
     
        If Cells(i, clo) = "" Then
        Cells(pld, cld) = txt
        i = i + 1
        txt = Cells(i, clo)
        pld = pld + 1
        Else
         txt = txt & Cells(i, clo)
        End If
    Next i
    End Sub
    A adapter aux besoins.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, hseconsult,

    ta question est bien trop imprécise pour que l'on puisse te répondre à coup sûr !


    Concaténer les groupes de lignes séparées par une ligne vide, d'accord, on a compris...
    Mais quid des lignes qui contenaient les éléments suivants que tu as concaténés, hein ? si tu les supprimes (ce qui serait alors logique), il te faut commencer par la dernière ligne et remonter vers la première, dans une boucle For avec Step -1, bien évidemment...
    Reste que l'on attend que tu sois très précis ...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut ucfoutu et le forum
    Concaténer les groupes de lignes séparées par une ligne vide
    C'est ce que je croyais avoir compris, mais le 2me groupe devrait être "efghijklm" dans ce cas et pas seulement "efghij", comme donné en exemple ? Une longueur à ne pas dépasser ?
    Bref comme disait Pépin, que doit-on proposer ,
    A+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour obtenir le contenu concaténé sur la 1ère ligne de chaque plage, il suffit de modifier la ligne indiquée ci-dessous, le reste : suppression de lignes ou pas n'est plus qu'une adaptation.

    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
    Sub Essai()
    'Indiquer le n° de la 1ère ligne de données
    pl = 2
    'Indiquer le n° de la colonne de données
    clo = 1
    'Indiquer le n° de la colonne de destination des données concaténées
    cld = 2
    'Indiquer le n° de la 1ère ligne de copies des données concaténées
    pld = 2
     
    dl = Range(Cells(65536, clo), Cells(65536, clo)).End(xlUp).Row
    txt = Cells(pl, 1)
     
    For i = pl + 1 To dl + 1
     
        If Cells(i, clo) = "" Then
        Cells(pld, cld) = txt
        i = i + 1
        txt = Cells(i, clo)
    'remplacer la ligne ci-dessous
        pld = pld + 1
    'par
        pld = i
        Else
    'pour séparer le contenu de chaque ligne par un espace, remplacer la ligne
         txt = txt & Cells(pld, clo)
    'par
         txt = txt & " " & Cells(pld, clo)
        End If
    Next i
    End Sub

Discussions similaires

  1. Concaténer en ligne les données d'une colonne
    Par philben dans le forum Contribuez
    Réponses: 2
    Dernier message: 16/02/2015, 13h23
  2. Concaténer des lignes
    Par Wisefool dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/02/2008, 17h25
  3. Concaténation de ligne en SQL
    Par GLSpirit dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/10/2007, 12h09
  4. [VBA DAO] Concatèner deux lignes
    Par rayni88 dans le forum VBA Access
    Réponses: 12
    Dernier message: 18/07/2007, 12h18
  5. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 22h56

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