XL 2016 Archivage de lignes sous condition

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Oddoneju

XLDnaute Nouveau
Bonjour,

Je souhaite archiver automatiquement des lignes contenant le terme "Terminé" dans une colonne définissant l'état de la ligne (déplacement d'une feuille 1 dans une feuille 2).
Le fichier est simple, j'ai mes en-têtes en ligne 1 sur une dizaine de colonnes, les en-têtes de la feuille 1 et 2 sont les mêmes.
J'ai essayé de modifier des codes retrouvés sur des forums mais je n'ai pas réussi à l'adapter à mon besoin.

Merci de votre aide.
 
Re

Un petit fichier exemple fourni par tes soins éviterait à chacun de ceux qui voudraient te répondre de récréer un fichier (qui est déjà au chaud sur ton disque dur)

Cela accéléra aussi l'arrivée de solutions à ta question

Pour joindre un fichier -> cliquer sur [Joindre un fichier]
 
Re

Ca devrait mieux marché ainsi
Enrichi (BBcode):
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Ligne As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column <> 1 Then Exit Sub
  If Target = "Terminé" Then
    With Sheets("Feuil2")
      Ligne = Application.Max(.Cells(.Rows.Count, 1).End(xlUp).Row, 2) + 1
      .Cells(Ligne, 2).Resize(, 12).Value = Target.Offset(, -9).Resize(, 12).Value
    End With
    Rows(Target.Row).Delete
  End If
End Sub
PS: Ce code ne doit pa être dans un module standard
Mais dans le code de la feuille
(C'est le cas mais il est aussi dans le module1 que tu peux donc supprimer)
 
Merci pour votre rapidité.
J'ai une erreur sur la formule (cf capture).
Je vais faire le test demain sur le fichier réel, est-ce qu'il y a des paramètres à modifier en fonction du nombre de colonnes ?
 

Pièces jointes

  • Capture d’écran 2023-09-18 à 22.41.16.png
    Capture d’écran 2023-09-18 à 22.41.16.png
    290.7 KB · Affichages: 8
Re

Cela devrait fonctionner
(cela fonctionne sur mon PC. Je viens de tester)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Ligne As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column <> 1 Then Exit Sub
  If Target = "Terminé" Then
    With Sheets("Feuil2")
      Ligne = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      .Cells(Ligne, 1).Resize(, 5).Value = Target.Resize(, 5).Value
    End With
    Rows(Target.Row).Delete
  End If
End Sub

Conseil en passant
Précise dans ton profil, ta version Excel
Et quand tu créés une discussion, indique en préfixe la version Excel utilisée
(donc pour toi : XL pour Mac )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
208
Réponses
5
Affichages
175
Retour