Pour copier une ligne (si condition) sur autre feuille

Alain262

XLDnaute Nouveau
Bonjour à tous,

En cherchant, j'ai trouvé une grande partie de mon bonheur avec cette macro: (merci à son créateur et au forum !!!).
Mon but, copier sur une 2ème feuille ("Travaux réalisés") chaque ligne de la feuille 1 ("Liste travaux") sous réserve que la cellule de la colonne K contienne la valeur 1

Option Explicit
Sub essai()
Dim wA As Worksheet, wN As Worksheet, i As Long, r As Long, c As Long
Set wA = Worksheets("Liste travaux"): Set wN = Worksheets("Travaux réalisés")
r = wN.Cells(Rows.Count, 1).End(xlUp).Row
'Début d'une boucle variant de 2 à 100 lignes
For i = 2 To 100
'Si la cellule K ligne i de la feuille wA vaut 1 alors
If wA.Cells(i, 11) = 1 Then
r = r + 1
'copier la plage (dans wA) allant de A ligne i jusque R ligne i et la coller en feuille wN en A ligne r
wA.Range(wA.Cells(i, 1), wA.Cells(i, 9)).Copy Destination:=wN.Cells(r, 1)
End If
Next i
End Sub


Mais je souhaiterais qu'une fois cette tâche réalisée, les lignes copiées de la feuille 1 ("Liste travaux") soient effacées et aussi que les exécutions suivantes de la macro permettent d'écrire à la suite des lignes précédentes - et non à leur place - dans la feuille 2 ("Travaux réalisés")...

Mille mercis pour le dépannage
 
Dernière édition:

Alain262

XLDnaute Nouveau
Re : Pour copier une ligne (si condition) sur autre feuille

Bonjour Laurent, et tout le forum

Désolé, c'est une erreur. Ecrivant ce message du boulot, j'ai mélangé les noms entre mes feuilles de travail.
Je fais des essais divers et ne parviens toujours pas à trouver la solution souhaitée...

J'ai corrigé sur le message initial.
Cordialement,
Alain
 

titiborregan5

XLDnaute Accro
Re : Pour copier une ligne (si condition) sur autre feuille

Bonjour Alain, Laurent, le forum,
sans fichier c'est difficile...
Pour copier à la 1ère cellule vide (ou dernière cellule remplie +1) regarde du coté de range("a1").end(xldown).offset(1,0)...
Pour supprimer une ligne rows(x).delete.
Bien sûr, il faut le faire après avoir coller les valeurs...
Bon courage
 

Alain262

XLDnaute Nouveau
Re : Pour copier une ligne (si condition) sur autre feuille

Bonjour à tous,

Je reviens avec le fichier joint pour plus de clarté...
Comme conseillé, j'ai ajouté une ligne rows.delete. Le résultat est mitigé; tout ne s'efface pas.

Mais surtout, je me demande comment faire en sorte que les futures lignes de la feuille 1 s'ajoutent à la suite des précédentes en feuille 2 (et non à leur place...)

Voici la macro actuelle :

Sub archivage()
Dim wA As Worksheet, wN As Worksheet, i As Long, r As Long, c As Long, t As Long
Set wA = Worksheets("Demandes"): Set wN = Worksheets("Archives")
r = wN.Cells(Rows.Count, 2).End(xlUp).Row
'Début d'une boucle variant des lignes 3 à 100
For i = 3 To 100
'condition : si la cellule J ligne i de la feuille wA vaut 1 (si date réalisation et responsable mentionnés)
If wA.Cells(i, 10) = 1 Then
r = r + 1 'r augmente de 1 (=1ère ligne vide de wN)
'copier la plage (dans wA) allant de A ligne i jusqu'à R ligne i et la coller en feuille wN en A ligne r
wA.Range(wA.Cells(i, 1), wA.Cells(i, 8)).Copy Destination:=wN.Cells(r, 1)
Cells(i, 1).EntireRow.Delete 'efface ligne si travaux faits
End If
Next i
End Sub


Merci pour l'aide,
Cordialement
 

Pièces jointes

  • travaux.xlsm
    75.5 KB · Affichages: 36

Alain262

XLDnaute Nouveau
Re : Pour copier une ligne (si condition) sur autre feuille

Tibo,

Je viens de découvrir votre réponse et le fichier complété.
C'est exactement ce que je cherchais.
Avec mes très sincères remerciements pour cette aide aussi prompte qu'efficace.
Alain
 

Discussions similaires

Réponses
5
Affichages
243
Réponses
7
Affichages
392

Statistiques des forums

Discussions
312 430
Messages
2 088 359
Membres
103 827
dernier inscrit
TiphaineBnd