Vérifier si une date est comprise entre deux dates - VBA
Bonjour à tous
J'ai lu pas mal de sujet similaire mais tous le traiter en excel, mwa je le voudrais en vba
Je m'explique
Je sélectionne plusieurs ligne et vérifie si dans la première colonne (des lignes sélectionnés) si la date présente est comprise entre deux dates définies plutôt par les variables vdate1 et vdate2.
Si la date est comprise dans ma période, je déplace la ligne entière, sinon je supprime la ligne.
Mon problème est que je n'arrive pas à vérifier si la date est bonne ou non.
Pour,infos mes variables sont en format date, et la date présente dans la cellule est sous le format classique DD/MM/AAAA
Merci de votre aide
Bonjour
Crdlt
Impossible de t'envoyer un fichier (je l'aurai déjà fais
C'est un fichier entreprise, et comprends énormément de macros différentes et imbriquées entre elles.....
Sorry
Bonjour,
Il est si difficile de créer un classeur exemple représentatif de tes données?
Aide nous à t'aider.
Cdlt.
Je ne demande que sa
Si joints une partie du code qui me permet de faire ce que je veux.
Ce qui reste à faire est en gras: vérifier que la date de ma cellule A14999 est comprise entre vdate1 et vdate2
Je récupère les valeurs sur un autre fichier excel.
L'utilisateur utilise une boite de dialogue pour renseigner les dates et le nom du classeur.
Le code suivant permet de récupérer les données sur l'autre classeur puis de les traiter .
Aujourd'hui seul la condition des données est si dans la ligne il y a "P2" (Permet de trier les bonnes lignes des mauvaises ) je voudrais rajouter dans cette condition mon pb de date
Sub Miseajour()
i = 1
nom = ActiveWorkbook.Name 'récup nom classeurs
vcmd = MAJ.vcmd
Windows(vcmd).Activate 'change classeur
Sheets("CG. Eure").Select 'selectionne liste commande
vder = Range("L1048576").End(xlUp).Address
Range("A23:" & vder).Select
Selection.Copy
vcpt = Selection.Rows.Count 'compte nombre ligne
Windows(nom).Activate 'reviens sur le classeur
Sheets("Synthèse Débours P2").Select 'colle
Range("A14999").Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Do While i <= vcpt 'tri ligne
If (Range("D14999") = "P2") Then '[b]comprise entre date et <> liste présente[/b]
vder = Range("C10001").End(xlUp).Offset(1, 0).Address 'Insert nouvelle ligne
Range(vder).Select
Selection.EntireRow.Insert
Range("A15000").Copy 'copie date
ActiveCell.Offset(0, 3).Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B15000").Copy 'copie nom collège
ActiveCell.Offset(0, -3).Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E15000").Copy 'copie prix
ActiveCell.Offset(0, 5).Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H15000").Copy 'copie designation
ActiveCell.Offset(0, -3).Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G15000").Copy 'copie fournisseur
ActiveCell.Offset(0, 2).Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A8").Copy 'copie formule ref
ActiveCell.Offset(0, -6).Select
Selection.PasteSpecial paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B8").Copy 'copie formule ref
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("D8").Copy 'copie formule
ActiveCell.Offset(0, 2).Select
Selection.PasteSpecial paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Rows("14999:15000").Select 'suppr ligne
Selection.Delete Shift:=xlUp
Else
Rows("14999:14999").Select 'suppr ligne
Selection.Delete Shift:=xlUp
End If
i = i + 1
Loop
Bonjour le forum, alors j'ai découverts la fonction DateDiff, et me la suis approprié
Du coup je vérifie si ma date voulue est comprise dans ma période choisi par le biais de deux datediff
vdiff1 = DateDiff("d", vdate1, Range("A14999").Value) 'vérifie si date comprise dans periode demandée
vdiff2 = DateDiff("d", Range("A14999").Value, vdate2)
La réponse me permet d'éffectuer mon si plus tard... avec mes autres conditions
If (Range("D14999") = "P2" And vdiff1 >= 0 And vdiff2 >= 0 And vcompteur <> 1) Then
Et sa marche !!!!