Fonction CONCATENER et filtrage
Bonjour à tous,
Avant tout, merci d'exister et nous proposer de vous soumettre nos cas les plus fous sur Excel.
Je vous sollicite aujourd'hui pour le cas suivant:
J'ai un tableau multi colonnes de différents types (texte, url, chiffres, etc.) sur ma Feuil1
J'ai une deuxième feuille nommée Export Filtre qui a pour objectif de récupérer des valeurs de différentes colonnes de Feuil1.
Pour ce faire sur ma feuille export filtre j'ai fait la fonction: =CONCATENER(Feuil1!A16;",";Feuil1!D16;",";Feuil1!E16) que je dépile sur toutes mes lignes.
Jusque là pas de soucis, il me récupère bien les infos des mes colonnes.
Cependant !
Dans ma feuil1 je suis amené à filtrer les colonnes pour affiner les résultats et là c'est le drame puisque ma feuille Export filtre ne se met pas à jour, ce qui est normal, je le sais puisque le filtre n'est qu'une forme d'affichage.
Néanmoins, y'a t-il une fonction VBA (ou autre solution) qui me permettrait de mettre à jour la feuille Export filtre en fonction de ce que je filtre sur ma Feuil1 ?
Un grand merci par avance pour le temps accordé
Je reste à votre disposition pour tous compléments.
Guillaume
Bonjour Guillaume,
Je te propose le code VBA suivant :
Sub CONCATENER_FILTREE()
Dim oSheetTo As Worksheet
Dim oRangeFrom As Range
Dim oRangeTo As Range
Dim oCellTo As Range
Dim oRow As Range
Dim i As Long
Dim sTexte As String
'On réfère la feuille de destination
Set oSheetTo = ThisWorkbook.Worksheets("EXPORT FILTRE")
'On réfère la première cellule de destination
Set oCellTo = oSheetTo.Range("B2")
'On réfère la plage de cellules à effacer
Set oRangeTo = oSheetTo.Range(oCellTo.Address, oSheetTo.Cells(oSheetTo.UsedRange.Rows.Count, 2))
'On efface les cellules de la feuille de destination
oRangeTo.Clear
'On référe la plage du tableau de la feuille 1
Set oRangeFrom = ThisWorkbook.Names("Tableau1").RefersToRange
'On boucle sur les lignes filtrées
For Each oRow In oRangeFrom.SpecialCells(xlCellTypeVisible).Rows
If oRow.Row > oRangeFrom.Row Then
'Si la ligne n'est pas l'entête du tableau, on concatène ses valeurs
sTexte = oRow.Cells(1, 1).Value & oRow.Cells(1, 4).Value & oRow.Cells(1, 5).Value
'On recopie la concaténation dans la cellule de destination
oCellTo.Offset(i).Value = sTexte
'On passe à la ligne suivante de la plage de destination
i = i + 1
End If
Next
End Sub
Je joins mon classeur de test.