[Excel 2016] Archiver une ligne selon condition

Fermé
ouska36 Messages postés 3 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 29 mars 2018 - Modifié le 27 mars 2018 à 15:03
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 29 mars 2018 à 14:33
Bonjour à tous,

J'ai parcouru le forum à la recherche de solution pour copier/coller une ligne de l'onglet "Dashboard" vers l'onglet "Archives" lorsque la valeur de la colonne "AD" est égale à "COMPLETE" (Excel 2016). La macro fini par supprimer la ligne archivée de l'onglet "Dashboard".

La solution que j'ai trouvé (merci aux contributeurs) fait le boulot jusqu'au collage...la macro me colle la ligne tout en haut et écrase celle archivée auparavant...

Ce que je souhaite avoir, c'est un collage qui rentre dans le tableau "Archives" à partir de la ligne n°7 et qui n'écrase pas les lignes déjà archivées (possibilité d'archiver plusieurs lignes en même temps): Soit en ajoutant les lignes l'une en dessous de l'autre ou si ce n'est pas compliqué, insérer les nouvelles lignes archivées tout en haut du tableau et décaler les anciennes vers le bas.

Pouvez-vous m'aider SVP à corriger "ma" macro (je ne suis absolument pas un initié, j'apprends sur le tas):
Code :

Sub Groupe13_Cliquer()

A = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row
For i = A To 2 Step -1
If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then
Worksheets("Dashboard").Rows(i).copy Worksheets("Archives").Cells(Rows.Count, 1).End(xlUp)
Worksheets("Dashboard").Rows(i).EntireRow.Delete
End If
Next

End Sub


Merci de votre aide.
Cordialement
A voir également:

3 réponses

ouska36 Messages postés 3 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 29 mars 2018 1
Modifié le 29 mars 2018 à 12:28
Salut michel_m, salut ccm81,

Merci de votre aide.
On m'a proposé sur un autre forum la solution suivante qui marche très bien :


Sub Groupe13_Cliquer()

Dim DashRow As Long
Dim ArchiveRow As Long
Dim i As Long
Dim plage As Range

DashRow = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row
For i = DashRow To 7 Step -1
If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then
Set plage = Worksheets("Archives").Range("B6:B" & Cells(Rows.Count, 2).End(xlUp).Row)
ArchiveRow = plage.SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row ' Permet de vérifier le numéro de ligne cible
Worksheets("Dashboard").Rows(i).Copy
Worksheets("Archives").Cells(ArchiveRow, 1).PasteSpecial
Worksheets("Dashboard").Rows(i).EntireRow.Delete
End If
Next

End Sub


Le seul souci maintenant c'est que le collage des cellule se fait hors tableau quand le tableau est plein:
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 29 mars 2018 à 14:35
peut-^tre regarder ce que que je t'ai proposé....
et au besoin répondre à ce que j'e t'ai demandé

et apparement, contrairement à l'autre forum, tu n'as pas fourni ton classeur....
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
27 mars 2018 à 18:31
Bonjour

Essaies ceci
Sub Groupe13_Cliquer()
A = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row
For i = A To 2 Step -1
  If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then
    Worksheets("Dashboard").Rows(i).Copy Worksheets("Archives").Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
    Worksheets("Dashboard").Rows(i).EntireRow.Delete
  End If
Next
End Sub

Cdlmnt
0
ouska36 Messages postés 3 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 29 mars 2018 1
Modifié le 28 mars 2018 à 15:05
Merci!!

Cela copie effectivement les lignes sans les écraser dans l'onglet "Archives" mais le fait sous le tableau et pas dans le tableau. Que dois-je modifier?

Cordialement
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
29 mars 2018 à 09:40
Bonjour tt le monde,

Ça va CCM81 ? ;o)

Copier toute une ligne est inutile : quelle est la dernière colonne utilisée dans "dashboard" ?

il y a t il plusieurs "complete" à transférer à la fois ou un seul ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
29 mars 2018 à 12:20
En attendant une réponse aux éclaircissements demandés à notre ami ouska, par exemple avec la classeur en pièce jointe sur cjoint.com

https://mon-partage.fr/f/wx9cWSDC/
0