Petit soucis dans ma macro

karakoman1

XLDnaute Occasionnel
Bonjour le forum,
Je voudrais soumettre ma macro aux spécialistes VBA qui m'ont déja bien aidé à la construire.
Mon problème:
Cette macro devrait filtrer une colonne en fonction d'une date trouvée (le mois actuel +2 mois) sur la 4eme ligne d'un tableau
Au jour d'aujourd'hui, elle devrait me trier le mois de janvier 2014. Et bien... Que nenni!!
J'ai l'impression que le problème se situe dans le fait de passer de 2013 à 2014 fait qu'il ne trouve pas la date.
Dans la ligne:

d = CDate("1/" & Month(Date) + 2 & "/" & Year(Date))

Quand je change le +2 en +1, ca marche, j'ai bien le mois de décembre trié.
Il faudrais pêut-être adapter cette ligne de commande.
J'espère qu'une âme charitable voudra bien jeter un oeil et pourra m'aider à avancer un peu plus.
Merci à vous


Code:
Private Sub CommandButton3_Click()
             'Affiche le mois en cours +2 mois, filtre et copie dans Test Planning
 Dim d As Date 'déclare la variable d (Date)
 Dim r As Range 'déclare la variable r (Recherche)
 
  ActiveSheet.AutoFilterMode = False 'Désactive le filtre automatique
ActiveCell.Select 'enlève le focus au bouton
 d = CDate("1/" & Month(Date) + 2 & "/" & Year(Date)) 'définit la date d + 2 mois
 Set r = Range("BQ4:DU4").Find(d, , xlFormulas, xlWhole) 'définit la recherhce r
 'si il existe au moins une occurrence trouvée, sélectionne la première occurrence, positionne la colonne à gauche
 If Not r Is Nothing Then r.Select: ActiveWindow.ScrollColumn = r.Column
 'Active le filtre sur la colonne active
 ActiveSheet.Range("$A$8:$DV$203").AutoFilter ActiveCell.Column, Criteria1:=RGB(255 _
        , 255, 0), Operator:=xlFilterCellColor
    'Efface les valeurs du Planning d'inspection
    Worksheets("Test Planning insp").Range("B7:B50").ClearContents
    'Sélectionne et copie les cellules triées  de l'onglet Liste Véhicules
    Worksheets("Liste Véhicules").Range("J65536").End(xlUp)(1).Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.Copy
    'Active la feuille Test Planning insp et colle les valeurs de la feuille liste Véhicules
    Sheets("Test Planning insp").Activate
    Worksheets("Test Planning insp").Range("B7").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Worksheets("Test Planning insp").Range("A5").Value = Worksheets("Test Planning insp").Range("B4").Value
 End Sub
 
C

Compte Supprimé 979

Guest
Re : Petit soucis dans ma macro

Bonjour Karakoman1

Normal, tu additionne 2 au mois, mais l'année reste celle du jour
Code:
Year(Date)

Il faut utiliser comme formule
Code:
d = CDate(Date + (2 * 30.5) - Day(Date) + 1)
Comme ça tu auras bien le 1er du mois M+2

A+
 

Dranreb

XLDnaute Barbatruc
Re : Petit soucis dans ma macro

Bonjour.
Mon conseil: utiliser DateSerial: il interprète logiquement les renseignement indiqués sans exiger pourtant qu'ils soient dans leurs plages de valeurs valides.
VB:
d = DateSerial(Year(Date), Month(Date) + 2, 1) 'définit le 1er du mois sauté après le mois en cours
La fin du mois en cours, par exemple, c'est un jour de moins que le 1er du mois suivant, et bien on le lui dit bêtement comme ça :
VB:
d = DateSerial(Year(Date), Month(Date) + 1, 0)
 
Dernière édition:

karakoman1

XLDnaute Occasionnel
Re : Petit soucis dans ma macro

Merci Bruno,
Ca marche nickel. je n'en doutais même pas!!
Petite question, si je veux faire varier la date à +1 mois, je fais comment?
Pourrais-tu m'expliquer le fonctionnement de cette ligne? Histoire de rester moins bête

Bruno
PS: Moi aussi c'est Bruno :rolleyes:

Edit: Désolé Dranreb, je n'avais pas vu ta réponse, j'y jette un oeil
 
Dernière édition:

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc