[Excel 2016] Archiver une ligne selon condition

ouska36 Messages postés 3 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. ouska36 Messages postés 3 Statut Membre 1
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. ouska36 Messages postés 3 Statut Membre 1
       
      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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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