Copier/Coller en VBA si DateDiff < 5

Signaler
Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010
-
Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010
-
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

Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010

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
Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010

Résolu.
Merci quand même
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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
Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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
Messages postés
15
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 février 2010

Ok ok Désolé