Collage après filtre dans les cellules visibles

antwane

XLDnaute Nouveau
Bonjour,

Malgré plusieurs sujet existant, j'ouvre celui-ci car les solutions proposés que j'ai trouvé ne fonctionne pas.

La solution qui semble fonctionné pour d'autres utilisateurs :
(Dans le tableau où l'on copie les cellules)
1- Sélection des cellules à copier
2- "F5" > Cellules... > "Cellules visibles seulement"

(Dans le tableau où l'on souhaite coller)
1- Sélection de la zone où l'on souhaite coller les cellules
2- Collage spécial > Format

Dans mon cas,
Soit j'ai un message d'erreur "impossible ... sélection multiples"
Soit il me copie les cellules dans les premières lignes et non les lignes "filtrées"



Merci d'avance à ceux qui trouveront une solution
 

Pièces jointes

  • Copier-coller après filtre.xlsx
    11 KB · Affichages: 51
  • 852664collagefiltreexcel2.png
    852664collagefiltreexcel2.png
    33.5 KB · Affichages: 95

chris

XLDnaute Barbatruc
Re : Collage après filtre dans les cellules visibles

Bonjour

La copie peut être mono source, multi cibles ou Multi sources, mono cible mais jamais multi sources, multi cibles.

En d'autres termes tu ne peux copier des cellules disjointes et les coller autrement que jointes.

En plus tu as plusieurs fois les même valeurs 1, 2...

Quel est concrètement l'objectif car il y a d'autres solutions que copier coller...
 

antwane

XLDnaute Nouveau
Re : Collage après filtre dans les cellules visibles

Concrètement,
Je dois récupérer des valeurs d'un tableau, jusqu'ici un "RECHERCHV" suffirait, mais...
Plusieurs valeur sont possible (voir mon exemple : dans la colonne A, les valeurs 1 peuvent correspondre aux valeurs 4,5,6 dans la colonne B)

Pour compliquer la chose, le tableau qui "récupère" les valeurs est différents du tableau qui "possède" les valeurs à copier.
(voir mon exemple : il y a des lignes de rajoutées (10, 20, etc.)

Effectivement, je suis partis peut être dans la mauvaise direction, si une solution existe, je suis preneur !
 

antwane

XLDnaute Nouveau
Re : Collage après filtre dans les cellules visibles

Le but est bien d'avoir un seul tableau, mais nous sommes limité "techniquement" lors de l'extraction des données (issu d'un ERP).
Les données du tableau 2 ne se trouve pas au même endroit que celles du tableau 1.

Et le résultat final est une sorte de concaténation/consolidation des deux tableaux.
 

gosselien

XLDnaute Barbatruc
Re : Collage après filtre dans les cellules visibles

Bonjour,

tes tableaux en exemple devraient être plus explicites, et tu auras des réponses appropriées ...
Mets tes tableaux ic avec données non confidentielles et ça devrait aller :)
P.
 

antwane

XLDnaute Nouveau
Re : Collage après filtre dans les cellules visibles

Ci-joint un nouvel exemple (j'espère plus explicite).
Pour résumé, je dois rapporter la colonne coût matière (tableau2) dans le tableau 1.
Pour me simplifier la vie, je filtre par type "Acheté" car ce sont les seuls qui ont un coût matière.
Après "filtrage", visuellement, je me trouve avec le même tableau entre le n°1 et le n°2, c'est pour ça que j'étais tenté de faire un copier/coller.

J'espère avoir été plus clair.
Cordialement
 

Pièces jointes

  • exemplev2.xlsx
    19.1 KB · Affichages: 59
  • exemplev2.xlsx
    19.1 KB · Affichages: 53
  • exemplev2.jpg
    exemplev2.jpg
    50.9 KB · Affichages: 60
  • exemplev2.xlsx
    19.1 KB · Affichages: 52

chris

XLDnaute Barbatruc
Re : Collage après filtre dans les cellules visibles

Bonjour

C'est faisable par une formule matricielle. Ce sont des formules gourmandes donc si ta base est très grosse, une solution par une requête MsQuery sera peut-être plus adaptée.

Voir déjà la formule ci-joint.
 

Pièces jointes

  • exemplev2.xlsx
    19.8 KB · Affichages: 49
  • exemplev2.xlsx
    19.8 KB · Affichages: 64
  • exemplev2.xlsx
    19.8 KB · Affichages: 68

antwane

XLDnaute Nouveau
Re : Collage après filtre dans les cellules visibles

Merci pour les solutions proposées.
Mes fichiers ne sont pas très gros (entre 100 et 200 lignes), mais il y a environ une trentaine de cellules à récupérer à chaque fois.
C'est surtout le fait que ça soit "répétitif" car c'est une tâche à effectuer dans plusieurs fichiers.
 

klin89

XLDnaute Accro
Re : Collage après filtre dans les cellules visibles

Bonsoir antwane, chris, le forum, :)

Avec un dictionaire, résultat en Feuil1 :
VB:
Sub Alignement()
Dim a, i As Long
    Application.ScreenUpdating = False
    With Sheets("Tableau2")
        a = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Resize(, 4).Value
    End With
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 1 To UBound(a, 1)
            .Item(Trim(a(i, 2))) = Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4))
        Next
        With Sheets("Tableau1")
        ' A voir pour redéfinir la plage
            a = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Resize(, 5).Value
        End With
        ReDim Preserve a(1 To UBound(a, 1), 1 To 6)
        For i = 1 To UBound(a, 1)
            If Not IsEmpty(a(i, 2)) Then
                If .exists(Trim(a(i, 2))) Then
                    a(i, 6) = .Item(Trim(a(i, 2)))(3)
                End If
            End If
        Next
        With Sheets("Feuil1").Cells(1)
            .CurrentRegion.Clear
            .Resize(, UBound(a, 2)).Value = [{"Niv","Référence","Type","Etape de fab","Coût de fab","Coût matière"}]
            .Offset(1).Resize(UBound(a, 1), UBound(a, 2)).Value = a
            With .CurrentRegion
                .Columns(1).Resize(, 4).HorizontalAlignment = xlCenter
                With .Rows(1)
                    .Font.Bold = True
                    .Interior.ColorIndex = 40
                    .BorderAround Weight:=xlThin
                    .HorizontalAlignment = xlCenter
                End With
                .Font.Name = "calibri"
                .VerticalAlignment = xlCenter
                .Borders(xlInsideVertical).Weight = xlThin
                .BorderAround Weight:=xlThin
            End With
            .Parent.Activate
        End With
    End With
    Application.ScreenUpdating = True
End Sub
Le code ajusté :
VB:
Sub Alignement1()
Dim a, i As Long
    Application.ScreenUpdating = False
    With Sheets("Tableau2")
        a = .Range("A1").CurrentRegion
    End With
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            .Item(Trim(a(i, 2))) = Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4))
        Next
        With Sheets("Tableau1")
            a = .Range("A1").CurrentRegion
        End With
        ReDim Preserve a(1 To UBound(a, 1), 1 To 6)
        a(1, 6) = "Coût matière"
        For i = 2 To UBound(a, 1)
            If Not IsEmpty(a(i, 2)) Then
                If .exists(Trim(a(i, 2))) Then
                    a(i, 6) = .Item(Trim(a(i, 2)))(3)
                End If
            End If
        Next
        With Sheets("Feuil1").Cells(1)
            .CurrentRegion.Clear
            .Resize(UBound(a, 1), UBound(a, 2)).Value = a
            With .CurrentRegion
                .Columns(1).Resize(, 4).HorizontalAlignment = xlCenter
                With .Rows(1)
                    .Font.Bold = True
                    .Interior.ColorIndex = 40
                    .BorderAround Weight:=xlThin
                    .HorizontalAlignment = xlCenter
                End With
                .Font.Name = "calibri"
                .VerticalAlignment = xlCenter
                .Borders(xlInsideVertical).Weight = xlThin
                .BorderAround Weight:=xlThin
                .Columns(5).Resize(, 2).NumberFormat = "_ * #,##0.00 €_ ;_ * -#,##0.00 €_ ;_ * ""-""?? €_ ;_ @_ "
            End With
            .Parent.Activate
        End With
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 

Pièces jointes

  • Alignement1.xls
    79 KB · Affichages: 60
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 005
Membres
104 003
dernier inscrit
adyady__