Archivage uniquement des cellules avec donnée

yoyo -  
 yoyo -
Bonjour,

Bonjour

Je suis en train de créer un petit programme.
L'une des feuilles sert à saisir les informations. Elle a un format standard ou je peux remplire jusqu'à 25 lignes (25 opération différentes) d'informations.
Une fois saisi je souhaite que ces informations soit archiver sur un autre feuille. Mais les 25 lignes ne seront pas forcément toutes remplies. En effet je peux n'avoir à faire que 19 opérations dans la journée et donc avoir à remplir 19 lignes. C'est tout à fait aléatoire. Mais ça ne peut pas dépasser les 25 lignes.
Je souhaiterais donc savoir comment je peux faire pour que ma macro d'archivage comprenne qu'elle doit archiver uniquement les lignes avec des informations?
Une autre macro me permettra de réinitialiser la feuille de saisie pour le jour suivant. La macro archivage fera en sorte qu'une base de donnée soit créée en archivant les journées les unes à la suites des autres.

J'espere que j'ai été assez claire. N'hésitez pas à me poser des questions.
J'ai mit un morceau de mon fichier en piece jointe.

http://www.cijoint.fr/cjlink.php?file=cj200903/cij8HcUrPq.xls

Merci pour votre aide.

Cordialement

Yohann
A voir également:

1 réponse

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Salut Yoyo

Regarde si cette macro te convient:
Sub archiver()
Dim Lig_saisie As Byte, Lig_archiv As Long
Dim tablo1(), tablo2()
Dim journee As Date
Dim fin As Byte

With Sheets("saisie")
    journee = .Range("B4")
    ' vérifie que l'archivage d'une journée n'a pas été effectué
    If Application.CountIf(Sheets("archivage").Range("A4:A10000"), journee) > 0 Then
        MsgBox "la journée du " & Format(journee, "dd/mm/yy") & " a déjà été archivée !", vbCritical
        Exit Sub
    End If
    ' plages à exporter en archive
    Lig_saisie = .Range("G28").End(xlUp).Row
    tablo1 = .Range("E4:G" & Lig_saisie).Value
    tablo2 = .Range("J4:O" & Lig_saisie).Value
End With

With Sheets("archivage")
    'ecrit les saisies de la journée
    Lig_archiv = .Range("A65536").End(xlUp).Row + 1
    .Range(.Cells(Lig_archiv, 1), .Cells(Lig_archiv + Lig_saisie - 4, 3)).Value = tablo1
    .Range(.Cells(Lig_archiv, 4), .Cells(Lig_archiv + Lig_saisie - 4, 9)).Value = tablo2
    'écrit le taux d'efficacité sur la dernière ligne de la journée
    .Cells(Lig_archiv + Lig_saisie - 4, 10) = Sheets("saisie").Range("S18")
End With

fin = MsgBox("archivage réussi. Nettoyer le tableau de saisie ?", vbYesNo)
If fin = vbYes Then
    Sheets("saisie").Range("F4:I27").ClearContents
End If

End Sub


edit 18:44
Vérifies la zone à nettoyer:
Sheets("saisie").Range("F4:I27").ClearContents
je ne suis pas sû de ce qu'il faut nettoyer ou pas!
0
yoyo
 
OUI ça convient tout à fait

je te remercie beaucoup.
0