Copier/Coller en VBA si DateDiff < 5

Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010 - 1 févr. 2010 à 11:35
Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010 - 2 févr. 2010 à 10:47
Bonjour à tous,

je travail actuellement sur une macro Excel. Pour cela je dispose de deux feuilles nommées "S04" et "Report".

Je souhaite vérifier, dans la feuille "S04" et pour chaque ligne, si la différence entre la date du jour et la date saisie dans la colonne C est inférieure ou égale à 5.

Si c'est le cas, alors je copie la ligne entière dans la feuille "Report", sinon je passe à la ligne suivante.

Si une cellule de la conne C ne contient aucune valeur je passe à la ligne suivante.

Pouvez-vous m'éclairer sur le code à appliquer. Merci.

- Kahoerre

6 réponses

Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010
1 févr. 2010 à 14:00
Voici mon début de code, cela ne fonctionne pas :/

Sub Report()
Dim ind As Integer
Dim D As Date
Dim indR As Integer

ind = 6
indR = 6

Do
Worksheets("S04").Activate
D = Range("E" & ind).Value

If D - DateValue(Now) >= 5 Then
Range("A" & ind).EntireRow.Copy
Sheets("Report").Range("A" & indR).Paste
indR = indR + 1
End If

ind = ind + 1

Loop Until ind = 98
End Sub

Si quelqu'un à la moindre idée :)
Merci

-Kahoerre
0
Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010
1 févr. 2010 à 14:41
Résolu.
Merci quand même
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
1 févr. 2010 à 15:19
Bonjour,

Je ne sais pas comment tu as "résolu", mais voilà de quoi te passer de ces vilains copy et paste :
indr = 6
With Sheets("S04")
  For i = 6 To 98
    If IsDate(Cells(i, 5).Text) Then
      If DateValue(.Cells(i, 5).Text) - Now >= 5 Then
        Sheets("Report").Cells(indr, 1).EntireRow.Value = .Cells(i, 5).EntireRow.Value
        indr = indr + 1
     End If
    End If
  Next
  End With


NB : j'ai vu que tu utilisais DateValue et ai donc pensé que tes cellules n'étaient pas formatées comme ils se doit ... (ce qui n'est pas le plus adroit)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010
2 févr. 2010 à 10:11
Bonjour,

merci pour tes précisions concernant le format Date, je les ai formatées comme il faut. :)

Une autre question me vient à l'esprit, la feuille "S04" signifie que cette feuille correspond à la semaine 4, comment puis-je faire un sorte que ma macro s'applique sur la semaine la plus "élevée" ? J'entends par la qu'il y'aura une feuille "S05","S06"... etc

Je voudrais donc que cela s'adapte comme il faut, qu'avant que ma macro se lance, elle vérifie si elle prend bien la bonne semaine.

Merci beaucoup.
- Kahoerre
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
2 févr. 2010 à 10:43
Re...
C'est sur ce forum une règle : question différente ===>> discussion différente
Si la question objet de la présente discussion est résolue : "Réponse acceptée" à cliquer


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Kahoerre Messages postés 15 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 février 2010
2 févr. 2010 à 10:47
Ok ok Désolé
0
Rejoignez-nous