Fusionner du texte de 3 cellules dans 1 cellule

jeromegmc

XLDnaute Occasionnel
Salut à tous,

Prenons tout d'abord un exemple simple et on généralisera après:

J'ai 3 cellules avec du texte dans chaque cellule.
Je souhaite que le texte de ces 3 cellules se retrouve dans une cellule de 3 lignes (avec l'option 'alt + enter' sous excel ou encore chr(10) en VBA)

J'obtiens un code de ce type:

Code:
Range('A1') = Range('B1') + Chr(10) + Range('B2') + Chr(10) + Range('B3')

Je souhaite généraliser l'exemple ci-dessus comme suit: Pour x cellules avec du texte, je souhaite obtenir une fusion de ce texte dans une cellule de x ligne.

Mon problème est de stocker le texte de chaque cellule et d'aller le coller dans une cellule à la suite en allant à la ligne à chaque fois.

Cela sachant que je sélectionne ma plage de cellule avec une input box comme suit:

Code:
Set mycells = Application.InputBox(prompt:='Sélectionnez la plage de cellules.', _
Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)


Quelqu'un a une solution?


A+

Message édité par: jeromegmc, à: 02/09/2005 15:40
 

Hervé

XLDnaute Barbatruc
Bonjour jérome, le forum

Pas sur d'avoir tout compris, mais je tente ma chance :

ce code concatene dans la colonne A, à hauteur de la première ligne de la sélection, les éléments de la sélection.

Sub Bouton1_QuandClic()
Dim mycells As Range
Dim i As Integer, j As Integer


Set mycells = Application.InputBox(prompt:='Sélectionnez la plage de cellules.', _
Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)

j = mycells(1).Row
'ici on récupère le numéro de la premiere ligne de la plage

For i = 1 To mycells.Count Step 3 'on boucle sur les éléments de la plage de 3 en 3
   
'on concatène les 3 éléments
    Range('a' & j) = mycells(i) & Chr(10) & mycells(i + 1) & Chr(10) & mycells(i + 2)
    j = j + 1
Next i

End Sub


salut
 

myDearFriend!

XLDnaute Barbatruc
Bonjour jeromegmc,

Si j'ai bien compris le problème, je te propose le code ci-dessous :

Sub Traitement()
Dim mycells As Range
Dim Chaine() As String
Dim
L As Long

      On Error GoTo Erreur
      Set mycells = Application.InputBox(prompt:='Sélectionnez la plage de cellules.', _
                  Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)
      On Error GoTo 0
      ReDim Chaine(mycells.Count)
      For L = 1 To mycells.Count
            Chaine(L) = mycells.Cells(L)
      Next L
      Range('A1') = Join(Chaine, vbLf)
     
Exit Sub
Erreur:
      MsgBox 'Traitement abandonné'
End Sub
Cordialement,

EDITION
Oups, pardon Hervé, je ne t'ai pas vu arriver...

Message édité par: myDearFriend!, à: 02/09/2005 16:10
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 727
Membres
110 552
dernier inscrit
jasson