Archivage d'une feuille excel selon paramètre de date

skan09 Messages postés 3 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 25 février 2008 - 24 févr. 2008 à 18:16
skan09 Messages postés 3 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 25 février 2008 - 25 févr. 2008 à 02:37
Bonjour tt le monde!

Je débute avec VB, et pour une ptite application de gestion de clients, j'aurais voulu un pti coup de pouce afin de pouvoir archiver dans de bonnes conditions. J'ai essayé plusieurs manières, mais j'arrive pas ecrire la condition qui permet de vérifier avant de copier coller les informations dans la feuille "Archive" que la date de la tournée (valeure unique qui diférencie chaque enregirstrement) n'existe pas dans un colonne de dates.
J'ai juste réussi à tester cette condition pour la dernière ligne du tableau.

Voici le code (qui vérifié juste la dernière ligne du tableau)

Dim K As Long

Sub archiver()

 'Trouver la dernière ligne de la feuille source
   K = 7
     Do While Worksheets("Fiche de suivi").Cells(K, 1) <> ""
     K = K + 1
    Loop
     Range("A" & 7 & ":G" & K).Select 'selection des cellules
    Selection.Copy 'copier la selection
     Sheets("Archive").Activate ' feuille de destination
   
 'Trouver la dernière ligne de la feuille de destination
M = 2
Do While Worksheets("Archive").Cells(M, 1) <> ""
M = M + 1
Loop
Range("A" & M).Select 'selectionner la cellule de destination
N = M
  
        If Worksheets("Fiche de suivi").Cells(4, "B").Value <> Range("C" & N - 1).Value Then 'Test sur la dernière date du tableau
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        For i = N To N + (K - 8)
        Worksheets("Archive").Cells(i, "C").Value = Worksheets("Fiche de suivi").Cells(4, "B").Value 'copie de la date
Next
 
 Else 'si la date de la dernière cellule archivée au correspond à la date de la trournée afficher le message
 MsgBox ("La date de la tournée est déjà archivée !")
 End If
End Sub

Si quelqu'un peut me permettre d'avancer
Je suis coincé à cette etape depuis un bon moment

J'ai aussi pu trouver la fonction concaténer mais pas déconcatener ! (ca peut aussi m'aider)
Merci à plus

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2008 à 19:26
déplacé de VB6 vers VBA !!!
skan09 Messages postés 3 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 25 février 2008
24 févr. 2008 à 20:39
???
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
25 févr. 2008 à 00:08
Salut,

ce qui suit suppose que les dates sont en colonne B en feuille de suivi et en feuille d'archive.

Sub archiver()
Dim DerniereValFicheSuivi As Long, DerniereValArchive As Long, DateSuivi As Date, DateArchive As Date
Dim i As Long
    DerniereValFicheSuivi = Worksheets("Fiche de suivi").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row
    DerniereValArchive = Worksheets("Archive").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row
    DateSuivi = Worksheets("Fiche de suivi").Cells(DerniereValFicheSuivi, 2).Value
    DateArchive = Worksheets("Archive").Cells(DerniereValFicheSuivi, 2).Value
    For i = 1 To DerniereValArchive
        DateArchive = Worksheets("Archive").Cells(i, 2).Value
        If DateSuivi = DateArchive Then
            MsgBox ("La date de la tournée est déjà archivée !")
            Exit Sub
            End
        End If
    Next
    DerniereValFicheSuivi = DerniereValFicheSuivi
    DerniereValArchive = DerniereValArchive + 1
    Worksheets("Archive").Range("A" & DerniereValArchive & ":G" & DerniereValArchive).Value = Worksheets("Fiche de suivi").Range("A" & DerniereValFicheSuivi & ":G" & DerniereValFicheSuivi).Value
    MsgBox ("Derniere tournée archivée avec succée !")
End Sub

vala, une methode parmi d' autres

A+
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
25 févr. 2008 à 00:12
... Aarrfffff ! encore une co...ie

enleve la ligne apres le next:
 
DerniereValFicheSuivi = DerniereValFicheSuivi

elle ne sert strictement a rien

A+

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
skan09 Messages postés 3 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 25 février 2008
25 févr. 2008 à 02:37
Merci pour ton coup de main, mais mon probleme n'est pas résolu, ca ne tourne pas comme je veux. Je voudrais en fait éviter de faire deux fois le meme enregistrement, et ton code ne prends pas le nom des clients qui doivent etre copiés en archive depuis la dernière ligne, a condition que la date n'a pas été retrouvé dans colonne date d'archive.
J'y suis presque!!

Si tu pouvais adapter un peu plus ton code par rapport a ce que je voudrais faire, je serais comblé!

J'ai voulu t'nevoyer une capture d'ecran mais peu pas!
En gros y une liste des clients sur la fiche de suivi et une cellule ou il y 'a la date, il faut verifier avant de copier les clients en archive que la date n'a pas dejà été archivée.
A+
Rejoignez-nous