XL 2010 Couper coller entre feuilles d'un classeur

Moonshine33

XLDnaute Nouveau
Bonjour à tous,

Je cherche à créer une macro pour créer un archivage de données vers un autre onglet d'un classeur.
Voici concrètement ce que je cherches à faire :

Sur la feuille active, pour chaque cellule de la colonne K,
Si valeur cellule K = « A », alors couper la ligne complète (et la supprimer dans cet onglet) et la coller vers a feuille « Archive » à la suite des cellules déjà existantes.
Classer les valeurs de la feuille « Archive » (celles de la plage allant de la colonne A à M) selon la valeur de la cellule A (dans l’ordre croissant).

Merci par avance à tous ceux qui tenteront de m'aider :) !

Moonshine.
 

Moonshine33

XLDnaute Nouveau
Re : Couper coller entre feuilles d'un classeur

Bonjour à tous,

Etant complètement novice sur le forum, les deux fois où j’ai posté des messages sur ce forum je n’avais pas mis de fichier exemple et j’avais eu des réponses. Du coup désolée je ne savais pas que c’était obligatoire. J’en mets un en pièce jointe.

Merci d’avance à ceux qui essaieront de m’apporter une solution.

Moonshine.
 

Pièces jointes

  • Exemple_excel_VBA.xlsx
    11.6 KB · Affichages: 26

Moonshine33

XLDnaute Nouveau
Re : Couper coller entre feuilles d'un classeur

Bonjour,
Merci pour ta réponse M12. En fait mon fichier source comporte beaucoup plus de valeurs que ce que j'ai mis en exemple, du coup ça marche pour mon exemple (très bien d'ailleurs), mais ne marche pas pour mon fichier source. J'ai l'impression que les plages que tu as mises sont limitées ? Et en fait il faudrait que la limite soit la dernière cellule non vide du tableau. As-tu besoin d'un fichier avec plus de valeurs pour t'aider ?
Merci pour ton aide en tout cas.
Moonshine.
 

gosselien

XLDnaute Barbatruc
Re : Couper coller entre feuilles d'un classeur

Bonjour,

un petit changement en commençant (par le bas )et ça marche :)

Code:
Option Explicit


Sub transfert()
Dim F1 As Range
Dim F2 As Worksheet
Dim i As Integer
Dim Desti
Dim DernLigneF1 As Long
Application.ScreenUpdating = False
DernLigneF1 = Sheets("source").Range("A" & Rows.Count).End(xlUp).Row
Set F1 = Sheets("source").Range("A1:A" & DernLigneF1)
Set F2 = Sheets("Archive")
For i = F1.Rows.Count To 4 Step -1
  If F1.Cells(i, 11).Value = "A" Then
    Set Desti = F2.[A65000].End(xlUp)
    Rows(i).EntireRow.Cut Destination:=Desti(2): Rows(i).EntireRow.Delete Shift:=xlUp
  End If
Next i
Range("a3").Select
ActiveWorkbook.Worksheets("Archive").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Archive").Sort.SortFields.Add Key:=Range("A3"), _
                                                         SortOn:=xlSortOnValues, _
                                                         Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Archive").Sort
  .SetRange Range("A4:M8")
  .Header = xlNo
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With
Application.ScreenUpdating = True
End Sub

P.
 

Discussions similaires

Réponses
56
Affichages
1 K

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87