Macro copier coller cellule visible uniquement

Bonjour,

J'ai un petit soucis avec ma macro. J'aimerais copier-coller uniquement les cellules visibles (quand j'ai un filtre), ce qui fonctionne mais je n'arrive pas à coller les valeurs sur la bonne ligne.

Par exemple, si je fais un filtre sur la valeur A de la colonne, j'aimerais que 1, 4, 5 et 9 soient collés sur la ligne 2, 5, 6 et 10 respectivement.

Une idée ?

Merci d'avance

72hidden-rows.xlsm (18.77 Ko)

Bonsoir,

Copier-coller est un mauvais réflexe en VBA

Bonjour à tous

Un essai à tester, si j'ai bien compris... Te convient-il ?

Bye !

167hidden-rows-v1.xlsm (19.75 Ko)

Rebonjour...

Pour répondre à mon "idée" sur ta question, réalisation dans la même feuille (sans copie de feuille), sans copier, sans coller, sans sélectionner...

Sub Test()
    Dim cc(), c As Range, n%, i%
    With ActiveSheet
        If .AutoFilterMode Then
            If Not .FilterMode Then GoTo nonfiltre
        Else
            GoTo nonfiltre
        End If
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        With .Range("A2:A" & n)
            ReDim cc(1 To .SpecialCells(xlCellTypeVisible).Count, 1 To 2)
            For Each c In .SpecialCells(xlCellTypeVisible)
                i = i + 1
                cc(i, 1) = c.Value
                cc(i, 2) = c.Offset(, 1).Value
            Next c
        End With
        Application.ScreenUpdating = False
        .ShowAllData
        .Range("H1:I" & n).ClearContents
        .Range("H1").Resize(UBound(cc, 1), 2).Value = cc
        Application.ScreenUpdating = True
    End With
    Exit Sub
nonfiltre:
    MsgBox "Données non filtrées : procédure sans objet !", vbExclamation, "Flitrage absent"
End Sub

On vérifie en plus que tu as bien filtré (sinon pas de raison de fatiguer VBA ! ) et on efface l'action précédente (utile au moins pour tester), et tu bénéficies d'une procédure indentée, lisible sans effort !

Cordialement.

Merci pour le coup de pouce ! Mais ce n'est pas ce que je cherche Je me suis mal expliqué. Voici une explication.

image 3

Bé oui ! Si on comprend le contraire...

Sub Test2()
    Dim cc(), c As Range, n%, i%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        ReDim cc(1 To n, 1 To 1)
        With .Range("A2:A" & n)
            For Each c In .SpecialCells(xlCellTypeVisible)
                i = c.Row
                cc(i, 1) = c.Value
            Next c
        End With
        Application.ScreenUpdating = False
        If .AutoFilterMode Then
            If .FilterMode Then .ShowAllData
        End If
        .Range("H1" & n).ClearContents
        .Range("H1").Resize(n).Value = cc
        Application.ScreenUpdating = True
    End With
End Sub

Là ça devrait correspondre à ton dessin !

C'est parfait, c'est ce que je cherche.

Quel talent, merci beaucoup !

Rechercher des sujets similaires à "macro copier coller visible uniquement"