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

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 !

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...
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

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?
 
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.
 
- 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
72
Affichages
1 K
Réponses
3
Affichages
540
Retour