XL 2016 Archives données Excel sous conditions

  • Initiateur de la discussion Initiateur de la discussion Hayaa
  • Date de début Date de début

Hayaa

XLDnaute Nouveau
Bonjour à tous,
Dans mon fichier excel j'ai créé un suivi de panne. Dans la feuille 1, il y a toutes les pannes déclarées (qui sont réparées ou qui sont en attente de réparation) et je veux dans la feuille d'archive copier ou archiver toutes les déclarations de pannes qui sont réparées (ou il y a pas une alerte) uniquement.
Je suis débutante en Excel vba et j'ai pas trouvé ma solution sur internet. Voilà un exemple de mon fichier
je vous remercie d'avance!
 

Pièces jointes

Solution
Bonjour Hayaa, et bienvenu(e) sur XLD,
Un essai en PJ avec :
VB:
Sub Archive()
    Dim DL%, DLA%, L%, C%
    Application.ScreenUpdating = False
    DL = [A65500].End(xlUp).Row             ' Dernière ligne occupée
    With Sheets("Archive")
        DLA = .[A65500].End(xlUp).Row + 1   ' Première ligne vide d'archive
        For L = DL To 2 Step -1
            If Cells(L, "F") <> "" Then     ' Si date fin non vide alors on archive
                For C = 1 To 10             ' On transfert les 10 cellules
                    .Cells(DLA, C) = Cells(L, C)
                Next C
                DLA = DLA + 1               ' Prochaine ligne d'écriture archive
                Rows(L).Delete Shift:=xlUp  ' Suppression de la ligne archivée
            End If...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hayaa, et bienvenu(e) sur XLD,
Un essai en PJ avec :
VB:
Sub Archive()
    Dim DL%, DLA%, L%, C%
    Application.ScreenUpdating = False
    DL = [A65500].End(xlUp).Row             ' Dernière ligne occupée
    With Sheets("Archive")
        DLA = .[A65500].End(xlUp).Row + 1   ' Première ligne vide d'archive
        For L = DL To 2 Step -1
            If Cells(L, "F") <> "" Then     ' Si date fin non vide alors on archive
                For C = 1 To 10             ' On transfert les 10 cellules
                    .Cells(DLA, C) = Cells(L, C)
                Next C
                DLA = DLA + 1               ' Prochaine ligne d'écriture archive
                Rows(L).Delete Shift:=xlUp  ' Suppression de la ligne archivée
            End If
        Next L
    End With
End Sub
NB : dans la feuille Archive j'ai supprimé la colonne "Matériel" qui ne correspondait à rien de la base de travail.
 

Pièces jointes

Hayaa

XLDnaute Nouveau
Bonjour sylvanu,
Je vous remercie pour votre réponse!
C'était exactement ce que je voulais mais y a un petit soucis dans le code que lorsque je veux rajouter des données dans le tableau de la feuille 1 et je clique sur archive ca recopie pas les données meme si la date fin n'est pas vide. Comment je peux résoudre ce problème?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Je viens d'essayer, je ne vois pas de problème.
Pouvez vous préciser ?
Voici ce que j'obtiens :
20230629_152207.gif


NB: Pour les nouvelles lignes il faut absolument que la colonne A soit remplie car c'est cette colonne que j'utilise pour détecter la dernière ligne à traiter.
 

Discussions similaires

Réponses
14
Affichages
364
  • Question Question
XL pour MAC Conditions excel
Réponses
9
Affichages
852
Réponses
6
Affichages
313
Réponses
18
Affichages
2 K
Réponses
11
Affichages
375
Réponses
2
Affichages
207
Réponses
6
Affichages
333

Statistiques des forums

Discussions
315 297
Messages
2 118 173
Membres
113 446
dernier inscrit
mathilde1876