Condition date + écriture ligne

Résolu/Fermé
Akalia Messages postés 34 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2016 - Modifié par pijaku le 16/07/2014 à 09:05
Akalia Messages postés 34 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2016 - 16 juil. 2014 à 14:07
Bonjour,

Je baigne depuis peu dans le VBA et j'aime vraiment ça surtout pour mon stage. Je suis actuellement confronté à un problème, j'essaye de réaliser ceci: Je veux que si la date d'aujourd'hui est supérieure à la date d'une colonne, alors VBA me récupère toutes les lignes possédant cette condition et me les colle dans une autre feuille, j'ai réalisé le code suivant, mais il ne me réalise pas la condition dans le recopiage, et me recopie toutes les données.

lg = 1
Dim la_date As Date
la_date = Sheets("Feuil1").Range("I" & n).Value
    dernligne = Sheets("Feuil").Range("A" & Rows.Count).End(xlUp).Row
    'Boucle sur les lignes 
    For n = 1 To dernligne
If la_date < Now Then
lg = lg + 1
            'copie ligne dans Base
            Sheets("Feuil1").Select
           Range("A" & n & ":L" & n).Select
           Selection.Copy
          'collage dans synthese
            Sheets("Feuil2").Select
            Range("AU" & lg).Select
           ActiveSheet.Paste
End If

Next n



En vous remerciant de votre aide que vous m'apporterez!
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 juil. 2014 à 08:45
Bonjour

quelques modifs pour que "ca marche"

Mais si tu as beaucoup de lignes, tu auras largement le temps d'inviter la charmante petite stagiaire du secrétariat à venir boire un café...

Option Explicit
'-------
Sub xxxxx()
Dim Dernligne As Integer, Lig As Integer, Lg As Integer
Dim La_date As Date

Application.ScreenUpdating = False 'fige le défilement de l'écran
Dernligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
Lg = 1
'Boucle sur les lignes
For Lig = 1 To Dernligne
La_date = Sheets("Feuil1").Range("I" & Lig).Value
If La_date < Now Then
'copie ligne dans Base
Sheets("Feuil1").Select
Range("A" & Lig & ":L" & Lig).Select
Selection.Copy
'collage dans synthese
Sheets("Feuil2").Select
Lg = Lg + 1
Range("AU" & Lg).Select
ActiveSheet.Paste
End If
Next
End Sub
0
Akalia Messages postés 34 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2016
16 juil. 2014 à 09:15
Bonjour Michel, merci pour la réponse rapide. J'ai une erreur qui survient sur cette ligne quand je compile et que j'essaye d'exécuter.

La_date = Sheets("Feuil1").Range("I" & Lig).Value

Je ne vois pas du tout comment l'erreur peut survenir déjà. S'il faut, j'ai un fichier d'exemple où je travaille à part sur la date (mon gros fichier étant vraiment trop lourd, puisque je réalise des indicateurs et en terme de méthode de travail, c'est bien mieux de séparer le travail dans d'autres fichiers.)

https://www.cjoint.com/?DGqjpGuDJba
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 16/07/2014 à 12:11
au vu de ton classeur
tout simplement
en I1 tu as l'ent^te "date" donc du texte,comme tu déclarer en date, tonton vba stoppe

For Lig =2 To Dernligne
La_date = Sheets("Feuil1").Range("I" & Lig).Value
0
Akalia Messages postés 34 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2016
16 juil. 2014 à 14:07
Merci encore, j'aurais du y songer, du coup j'y penserais la prochaine fois que je tombe sur ces changements de variable. Merci beaucoup.

P.S: il n'y a pas de jolies secrétaires, en revanche il y a de jolies stagiaires à qui je peux proposer des cafés :)
0