Filtrer et transposer certaines col classeur vers 1 autre

Bonjour à tous,

Je travaille sur 2 serveurs contenant l'un classeur où sont saisies de données (archives), commun à plusieurs services et l'autre où sont réalisés des calculs divers et variés, spécifique à chaque service (chaque service à le sien). Le classeur des archives contient un tableau de 20 colonnes, les lignes sont alimentées au fil du temps ; à ce jour, il y a environ 300 lignes (il vient d'être créé).

Dans un classeur de calcul, par exemple dans un onglet, je n'ai besoin que de la transposition de 3 colonnes non contigües (les valeurs doivent être reporter dans l'onglet : la colonne A contient l'année, la colonne B contient une identification et la colonne C contient le coût du produit).

Ces classeurs sont partagés.

J'ai utilisé la macro de Jacques BOISGONTIER mais elle transpose toutes les colonnes et je ne sais pas comment ne transposer que les colonnes B,C et T du fichier des archives.

Voici le code adapté depuis celui de Jacques BOISGONTIER (et avec les commentaires de PIJAKU) :

Sub Indicateurs_ServW()
Dim Tab_depart As Worksheet, Tab_arrivee As Worksheet
Dim DonneesInitiales(), DonneesFiltrees(), AnneesColB(), temp()
Dim MesAnnees As Object, Annee
Dim lig As Integer, Indice As Integer, i As Integer, col As Byte

Set Tab_depart = ThisWorkbook.Worksheets("BL")
With Tab_depart
    Set MesAnnees = CreateObject("Scripting.Dictionary")
    AnneesColB = .Range("B10", .Range("B" & Rows.Count).End(xlUp))
    For i = LBound(AnneesColB) To UBound(AnneesColB)
        MesAnnees(AnneesColB(i, 1)) = ""
        'Debug.Print AnneesColB(i, 1) '---- Pour vérification pas à pas
    Next i
    temp = MesAnnees.keys

    Call tri(temp, LBound(temp), UBound(temp))
  DonneesInitiales = .Range("A10:T" & .Range("A" & Rows.Count).End(xlUp).Row)
End With

    Indice = 1
        Set Tab_arrivee = ThisWorkbook.Worksheets("Indicateurs") 

    For lig = LBound(DonneesInitiales) To UBound(DonneesInitiales)
        If DonneesInitiales(lig, 2) = 2009 Then 'Annee Then
            ReDim Preserve DonneesFiltrees(19, 1 To Indice)
            For col = 1 To 19 
                DonneesFiltrees(col, Indice) = DonneesInitiales(lig, col + 1)
            'Debug.Print col & "    " & DonneesFiltrees(col, Indice)
            Next col
            Indice = Indice + 1
        End If
    Next lig

With Tab_arrivee
        .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(DonneesFiltrees, 2), UBound(DonneesFiltrees, 1) + 1) = Application.Transpose(DonneesFiltrees)
    End With

End Sub

Ce qui me pose poblème, a priori, c'est cette instruction

 .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(DonneesFiltrees, 2), UBound(DonneesFiltrees, 1) + 1) = Application.Transpose(DonneesFiltrees)

, je ne voudrais transposer que les colonnes B,C et T du classeur de départ dans les colonnes ABC du classeur d'arrivée (que je traite actuellement).

Je serais soulagée si quelqu'un pouvait m'apporter son aide et cela serait formateur pour moi (j'attends avec impatience le déclic Arrays, le concept m'échappe)

Merci par avance.

Bonjour,

Bon... personne pour m'aider ???

Je reviendrai plus tard, je continue mes recherches.

Rechercher des sujets similaires à "filtrer transposer certaines col classeur"