[Excel 2016] Archiver une ligne selon condition
ouska36
Messages postés
3
Statut
Membre
-
michel_m Messages postés 18903 Statut Contributeur -
michel_m Messages postés 18903 Statut Contributeur -
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 :
Merci de votre aide.
Cordialement
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:
- [Excel 2016] Archiver une ligne selon condition
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
- Partager photos en ligne - Guide
3 réponses
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 :
Le seul souci maintenant c'est que le collage des cellule se fait hors tableau quand le tableau est plein:

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:

Bonjour
Essaies ceci
Cdlmnt
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
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....