[VBA] Copier & concatener plage de cellule

  • Initiateur de la discussion Initiateur de la discussion johnmjs
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

johnmjs

XLDnaute Nouveau
Bonjour,

Tout d'abord merci pour ce forum qui m'a permis d'apprendre beaucoup. 🙂

Je vous expose mon problème :

- je dispose d'un tableau ou sont rentrés divers critères, je filtre ce tableau à l'aide d'un autofilter pour avoir les éléments qui m'intéressent (ceux qui ont une distance non nulle), jusque la ça va mon filtre fonctionne

- je souhaite ensuite recopier certaines colonnes filtrées sur une autre feuille de mon classeur, la encore cela fonctionne

- par contre je souhaiterai copier le concaténer le contenu de mes deux colonnes de commentaires afin d'afficher sur la seconde feuille dans la cellule appropriée commentaire1 : commentaire2

j'ai essayer avec un :
Sheets("Feuil1").Range("E7:F65534").SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Feuil2").[F6]
Malheureusement cela ne fonctionne pas, bon fallait s'y attendre 🙂, cela me colle les deux colonnes dans des cellules distinctes

J'ai donc essayé avec une boucle :
For c = 9 To c = 65534 Step 1
Sheets("Feuil2").Range("F" & marqueur) = Sheets("Feuil1").Range("E" & c).SpecialCells(xlCellTypeVisible).Value & " : " & Sheets("Feuil1").Range("F" & c).SpecialCells(xlCellTypeVisible).Value
marqueur = marqueur + 1
Next c

Malheureusement cela ne fonctionne pas non plus, j'ai l'impression que l'on ne rentre pas dans la boucle, j'ai du rater quelque chose mais quoi?
Peut etre faut il faire autrement, merci de vos lumières, parce que la je galère...

Je joins mon fichier et ma macro pour que ce soit plus clair
 

Pièces jointes

Re : [VBA] Copier & concatener plage de cellule

Bonjour,

peut-être ainsi :

Code:
Sub FiltreCopie()
Dim plageBase As Range
Dim Cel As Range
Dim I As Byte
Dim Tblo()
With ThisWorkbook.Worksheets("Feuil1")
    Set plageBase = .Range(.Cells(7, 1), Cells(7, 1).End(xlDown))
End With
With plageBase
    .AutoFilter Field:=4, Criteria1:="<>"
End With
Sheets("Feuil1").Range("A7:B65534").SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Feuil2").[A6]
For Each Cel In plageBase.Offset(0, 3).SpecialCells(xlCellTypeConstants, 23)
    ReDim Preserve Tblo(I)
    Tblo(I) = Cel.Offset(0, 1).Value & Cel.Offset(0, 2).Value
    I = I + 1
Next Cel
Sheets("Feuil2").Range("F6").Resize(UBound(Tblo) + 1, 1) = Application.Transpose(Tblo)
Feuil2.Columns.AutoFit
Feuil1.ShowAllData
End Sub

bon courage
 
Re : [VBA] Copier & concatener plage de cellule

Merci à toi bhbh, ça fonctionne parfaitement, maintenant plus qu'à comprendre le code ^^, notamment ta boucle for, tu balayes la plage de base et le offset? , tu décales de 3 colonnes ? J'arrive pas trop à visualiser, la ligne : ReDim Preserve Tblo(I) me pose problème également, mais je vais chercher un peu et ça va rentrer, c'est en forgeant qu'on devient forgeron après tout.
Merci
 
Re : [VBA] Copier & concatener plage de cellule

bonjour,
d'abord tu ouvres VBE (Alt+[f11])
ensuite tu colles le code suivant:
Code:
Function ConcatPlage(plage As Range, Optional séparateur As String = ", ") As String
    Dim rep As String, c As Range
    For Each c In plage
        If c.Value <> "" Then
            rep = rep & c.Value & séparateur
        End If
    Next c
    ConcatPlage = Left(rep, Len(rep) - Len(séparateur))
End Function

ensuite tu clique sur la cellule de destination et insérer une fonction personnalisés tu trouveras "ConcatPlage"

tu renseigne la plage à concatener et tu mets ton séparateur entre guillemets

exemple : =ConcatPlage(A29:A36;"-")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
799
Réponses
9
Affichages
713
Retour