Insertion de données filtrées

Bonjour,

J'ai de nouveau un problème lié à une insertion mais dans un domaine un peu différent et je n'arrive pas à me débugger malgré mes multiples tentatives.

J'ai une première feuille avec des données sous forme de tableau (jusque là c'est assez logique) je souhaiterais les copier et les insérer dans une deuxième feuille du même fichier après trois tris consécutifs.

Mon problème est toujours le même: la ligne correspondant à l'insertion... (même par simple collage, ça ne fonctionne pas)

je vous fournis mon code :

     Sub MacroGR1F()

        Dim WsS As Worksheet, WsC As Worksheet, nbL&, Source$
        Set WsC = ThisWorkbook.Worksheets("Feuil3")
        Set WsS = ThisWorkbook.Worksheets("Feuil1")
        'Application.ScreenUpdating = False

        'ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=1, Criteria1:="1"
        'ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=2, Criteria1:="F"
                    'Modifier le mois si besoin
        'ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=15, Criteria1:="6"

        With ThisWorkbook.Worksheets("Feuil1")
            nbL = .Cells(Rows.Count, 1).End(xlUp).Row - 1
            .Range("A2").Resize(nbL, 15).copy
        End With

'       expression.Insert(Décalage, CopierOrigine)
'       mySheet.Range("A1:C5").Insert Shift:=xlShiftDown
'        ActiveSheet.Range("A2:O2").Insert(xlShiftDown, 1) = True
        WsC.Range("A2:P2").Insert xlShiftDown
        'Application.ScreenUpdating = True

    End Sub

autre tentative:

    Sub CollageETPscoffret()

        Dim derlig As Long
        Dim dercol As Long
        Dim WsS As Worksheet, WsC As Worksheet
        Dim i As Integer

            ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=1, Criteria1:="1"
            ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=2, Criteria1:="F"
                        'Modifier le mois si besoin
            ActiveSheet.Range("$A$1:$O$4582").AutoFilter Field:=15, Criteria1:="6"

            Set WsS = ThisWorkbook.Worksheets("Feuil1") 'feuille source
            Set WsC = ThisWorkbook.Worksheets("Feuil3") 'feuille cible

            derlig = WsS.Range("B" & Rows.Count).End(xlUp).Row 'je définis la dernière ligne de mon tableau que je souhaite copier
            dercol = 15
            'WsS.Cells(2, Columns.Count).End(xlToLeft).Column 'je définis la dernière colonne de mon tableau que je souhaite copier

            Range(Cells(2, 1), Cells(derlig, dercol)).copy    'je copie

            With Sheets("Feuil3")
                .Range("A2:O2").Insert shift:=xlDown
            End With

            ThisWorkbook.Worksheets("Feuil3").Cells(2, 1).Paste          'Insert xlShiftDown

    End Sub
      

mes trois critères sont les suivants: colonne A = 1

B = F

et O = 6 (pour le mois de juin)

Bonjour,

je sais pas pour vous mais pour moi en tout cas le code :

Range("A2:O2").Insert shift:=xlDown

n'insert qu'une ligne et non la nombre de ligne voulu je pense

vous avez déclarer des variable

 Set WsC = ThisWorkbook.Worksheets("Feuil3") 'feuille cible

donc utiliser au lieu de réécrir la même chose (sa c'est juste pour opti le code )

Salut,

merci d'avoir regardé

pour les variables, je sais que ce n'est pas optimisé, mais ça l'a été... C'est juste que j'ai désespérément tout essayé pour trouver la faute :,(


Quant à l'insertion, normalement elle insère toute la plage copiée donc une ligne si une seule copiée, deux : deux... etc

RomD a écrit :

Quant à l'insertion, normalement elle insère toute la plage copiée donc une ligne si une seule copiée, deux : deux... etc

y a aucune variable dans cette ligne de code vba du coup insérera toujours un ligne donc lors du collage gros collision(je confirme sa dès que j'aurai télécharger le fichier ...... ou pas )


je viens de tester le code et j'ai remarquer un truc ( information a vérifier ^^)

lors de l’insertion de ligne , la plage qui a était copier avant n'est plus en "mémoire" donc au moment du collage ba.... y a rien a collé

Tu saurais quel est le problème? D'où il vient?

Bonjour,

pour la 1ère :

WsC.Rows(2).EntireRow.Insert

eric

Ton code ne fait que insérer une ligne, non? (Eric)


(merci d'avoir regardé au fait )

techniquement sa ligne code fait la même chose que je tien ^^

je cherche toujours de mon côté, mais ça n'avance pas vite :/

Ton code ne fait que insérer une ligne, non? (Eric)

et si tu testais ???

Remplace ta ligne .insert par celle-ci

C'est ce que j'ai fait, et justement, ça n'a fait "que" insérer une ligne après les intitulés de colonnes (au même format d'ailleurs)


Avec ce code là, le programme "fonctionne", dans le sens où il n'y a pas d'erreur.

Mais il n'insère qu'une ligne

With Sheets("Feuil3")
                    WsC.Range("A2:O2").EntireRow.Insert
            End With

plus besoin du "with" avec wsC

Chez moi ça fonctionne très bien, plus de 400 lignes s'ajoutent en Feuil3

Je regarde ça tout de suite, merci


D'accord, tout fonctionne, merci beaucoup !!

En fait c'est pas fini fini Lors de la copie - insertion, avec les filtres actifs, ça ne fonctionne pas comme il le faudrait :/

Comme dis, il faudrait que les lignes insérées soient uniquement celles correspondant aux données filtrées.

Merci à ceux qui me lisent (s'ils en ont l'envie ou le devoir personnel) de vous pencher sur ce problème là.

Cordialement,

R.

ne copie que les cellules affichées :

Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase").Rows.Count - 1) _
        .SpecialCells(xlCellTypeVisible).Copy

Bonjour,

Ça ne fonctionne pas (à moins que j'ai mal placé les lignes de code).

Merci quand même

Bonjour,

Ça ne fonctionne pas ne veut rien dire.

Execute en pas à pas et tu verras où tu t'es trompé.

eric

Ça ne fonctionne pas dans le sens suivant:

il n'insère que une ligne (en 2) au format de celle du dessus; sans aucune valeur

Rechercher des sujets similaires à "insertion donnees filtrees"