Incrémenter de façon variable du texte dans une cellule

Bonjour à tous,

Je suis embêté pour réaliser l'opération que je souhaite.

Je m'explique. J'ai un nombre variable de cellules contiguës d'une même colonne contenant du texte.

Je souhaiterais pouvoir joindre le texte de toutes mes cellules à l'intérieur d'une cellule cible, avec un séparateur ";" entre chaque texte.

Ma sélection commencera toujours en A6.

La cellule cible est B6 et sera toujours B6.

Aujourd''hui j'ai un range allant de A6 à A15, demain ce sera A6 à A30 etc..

Je n'arrive pas à incrémenter mes données selon la variable du nombre de lignes.

Voici mon idée:

Dim i As Integer

Dim DLig As Long

DLig = Range("A6").End(xlDown).Row + 1

For i = 7 To DLig

Cells(6, 2).Value = Cells(6, 1) & " ; " & Cells(i, 1) & " ; " & Cells(i+1, 1)

Next i

Seulement avec ce code, je me retrouve toujours en B6 avec le contenu de A6 d'un point virgule et du contenu de la dernière cellule non vide de ma sélection.

J'aimerais avoir en B6: A6 ; A7; A8; ... Ai; ADLig

Auriez vous une idée pour améliorer mon code ?

Je vous remercie.

Salut duninpohja,

une idée

Sub test()
Dim i As Integer
Dim DLig As Long
DLig = Range("A6").End(xlDown).Row
Cells(6, 2).Value = CONCATENATEMULTIPLE(Range("A6:A" & DLig), ";")
End Sub

Function CONCATENATEMULTIPLE(Ref As Range, Separator As String) As String
Dim Cell As Range
Dim Result As String
For Each Cell In Ref
 Result = Result & Cell.Value & Separator
Next Cell
CONCATENATEMULTIPLE = Left(Result, Len(Result) - 1)
End Function

Bonjour,

Sub concat()
    Dim datas, lig As Long, ch As String
    datas = [A6].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 5).Value
    For lig = 1 To UBound(datas)
        ch = ch & "; " & datas(lig, 1)
    Next lig
    Cells(6, 2).Value = Mid(ch, 2)
End Sub

eric

Edit : ah, en retard

Bonjour m3ellem1

Le résultat obtenu avec votre code correspond à mes attentes.

Vous avez donc défini une fonction caractérisant mon besoin. J'ignorais qu'on pouvait faire cela. C'est brillant. Je vous remercie.

Bonjour Eric,

Je ne comprend pas complètement votre code, mais le résultat est la.

Je vais me pencher sur les fonctions que vous avez utilisé pour comprendre la mécanique (notamment Ubound et Mid)

Je vous remercie beaucoup pour votre aide.

Duninpohja

La lecture des cellules étant chronophage, l'idée est de lire toute la plage en une fois dans un tableau, et ensuite de travailler avec la variable tableau.

Tu peux aussi le faire dans la fonction tant que c'est une plage d'un seul tenant, ça te fera un exercice

Je vous remercie, je vais tenter cet exercice.

Encore merci pour votre aide et votre bienveillance.

Duninpohja

Rechercher des sujets similaires à "incrementer facon variable texte"