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.

25cesigpa-gvs.xlsm (20.20 Ko)
Rechercher des sujets similaires à "fonction concatener filtrage"