Copier coller une ligne selon un statut

Bonjour,

J'aimerai déplacer les lignes dont la colonne statut est en "terminé" sur une autre feuille, voici le code que j'ai créer mais je n'arrive pas à déterminer à écrire "si la ligne est en statut terminé, déplace là"

Avez-vous svp une idée?

Merci d'avance!!

Sub archivage()

Dim Work1 As Workbook, Work2 As Workbook

'WBSource

'WBDest

Dim i As Integer

Set Work1 = Workbooks("En_cours")

Set Work2 = Workbooks("Archives")

'cherche la ligne vide dans le classeur de destination

i = WBDest.Worksheets(1).Range("A1").End(xlUp).Row + 1

'Copie la 2eme ligne de la premiere feuille dans le classeur source.

'Colle la ligne à la suite de la derniere ligne non vide dans le classeur de

'destination.

Work1.Worksheets(1).Rows(2).Copy _

Destination:=Work2.Worksheets(1).Cells(i, 1)

'Suppression de la ligne dans le classeur source

Work1.Worksheets(1).Rows(2).Delete

'Désactive le mode Couper/Copier

Application.CutCopyMode = False

End Sub

Salut Jana_722,

je pars du fait qu'une fois on change le statut à "terminé", l'archivage doit se faire instantanément/automatiquement

Code à ajouter dans la feuille "En_cours" (pour info une fueille c'est Worksheet, Workbook c'est un classeur)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne As Long
Set Target = Intersect(Target, Range("E1:E1000")) ' il faut adapter la colonne "Status"
If Target Is Nothing Then Exit Sub
If Target = "terminé" Then
Ligne = Target.Row
Target.EntireRow.Copy _
Destination:=Sheets("Archives").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End Sub

@++

Bonjour m3ellem1,

Cela fonctionne, merci beaucoup !

Est-il possible de faire la même chose d'un fichier à un autre?

Exemple : j'ai codé une macro afin d'extraire un fichier excel que je reçois quotidiennement par mail. Ce fichier se place dans un dossier et est écrasé tous les jours.

J'aimerai copier les lignes de ce fichier dans un autre fichier Excel stable sur mon ordinateur.

Seulement je ne peux pas coder sur le fichier puisqu'il est écrasé.

As-tu une idée stp?

Promis c'est ma dernière demande

Merci bcp et bon week end!

Salut Jana,

oui c‘est possible, montre ton code et si possible un/des fichier/s exemple/s.

Bonne nuit

Hello m3ellem1 !

En pj tu trouveras les 2 fichiers, test_reçu que je reçois quotidiennement et dont j'aimerai copier les lignes vers le suivi calage_base de donnée.

Voici mon code sur outlook pour me permettre l’extraction du fichier que je reçois à 11h, 14h et 16h ; toujours en cours de construction car il ne fonctionne pas pour le moment. L'idée est qu'à chaque réception le nouveau fichier écrase l'ancien dans mon dossier, et que dès que la ligne est remplie, le copiage-collage fonctionne. Je ne sais pas si cela est réellement possible et si oui où devrais-je coder cela?

J'ai déjà le code du copier coller que tu m'as gentillement proposé, il faut juste ajouter la condition "non vide" et coder le code dans un fichier à part ou sur outlook?

Merci pour ton aide

Dans ThisOutlookSession :

Private Sub Application_NewMail()

Call sauvegardePJ

End Sub

Et dans module :

Sub sauvegardePJ()

On Error Resume Next

Dim MonApp As Outlook.Application

Dim MonNameSpace As Outlook.NameSpace

Dim MonDossier As Outlook.Folder

Dim MonMail As Outlook.MailItem

Dim numero As Integer

Dim strAttachment As String

Dim NbAttachments As Integer

Dim chemin As String

'Instance des objets

Set MonApp = Outlook.Application

Set MonNameSpace = MonApp.GetNamespace("MAPI")

Set MonDossier = MonNameSpace.GetDefaultFolder(olFolderInbox)

numero = MonDossier.Items.Count

Set MonMail = MonDossier.Items(numero)

'chemin de destination des pièces jointes

chemin = "\\FRQSURDTC1VWSFS.code1.emi.philips.com\FR_cl_lifestyle\TEMP\TESTD\"

NbAttachments = MonMail.Attachments.Count

'contrôles possibles:nom de l'expéditeur, adresse mail expéditeur et sujet du mail

'MonMail.SenderName= ""

'MonMail.SenderEmailAddress

'MonMail.Subject

If MonMail.Subject Like "Prise de rendez-vous de 11h00 à 14h00 pour PHILIPS FRANCE" Then

i = 1

Do While i <= NbAttachments

strAttachment = MonMail.Attachments.Item(i).FileName

MonMail.Attachments.Item(i).SaveAsFile chemin & "Calage.xlsb"

i = i + 1

Loop

End If

End Sub

1test-recu.zip (8.94 Ko)

Salut m3ellem1

Update : la macro outlook qui extrait les fichiers fonctionne !

Rechercher des sujets similaires à "copier coller ligne statut"