Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Soustraction de date en vba

  • Initiateur de la discussion Initiateur de la discussion tprlechef
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tprlechef

Guest
Bonjour à tous !

Petit soucis de date en vba…

Dans une feuille excel j’ai mes opérations en cours et dans une deuxième feuille j’ai mes opérations à venir.

Je voudrais que 8 jours avant la data d’application de mes opérations à venir celles-ci soit couper/coller dans mes opérations en cours…

J’ai commencé mon code, mais j’ai des soucis sur la soustraction de date..

Quelqu’un peut-il m’aider ?!

Merci d’avance !
 

Pièces jointes

Re : Soustraction de date en vba

bonsoir,

Quelques corrections (le nom de feuille n'est pas "futur" mais "Avenir" , Date à la place de today)

Il te faut écrire le code nécessaire à ce que tu veux faire à la place de Msgbox ....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim cell As Range
j = 2

Do Until ActiveWorkbook.Sheets("Avenir").Cells(j, 1) & "" = ""


For Each cell In Sheets("Avenir").Cells(j, 1)
a = cell.Value - 8
If cell.Value - 8 > Date Then

MsgBox "ok"
End If
j = j + 1

Next cell
Loop

End Sub
 
Re : Soustraction de date en vba

Bonsoir CHALET53 et merci pour ton aide 🙂

Ton code marche impec (cependant c'était inferieur au lieu de superieur, un detail 😛)

J'ai des difficultes pour mon copier/coller (qui remplace mon msgbox)

Si la date dans Avenir est < à aujourd'hui, je souhaite couper cette ligne et la coller à la fin de Encours.

J'ai un souci dans ma boucle je pense... une idée?

merci de ton aide !


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim cell As Range
j = 2

Do Until ActiveWorkbook.Sheets("Avenir").Cells(j, 1) & "" = ""


For Each cell In Sheets("Avenir").Cells(j, 1)
a = cell.Value - 8
If cell.Value - 8 > Date Then

Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy

With Sheets("Encours")

Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
End With
End If
j = j + 1

Next cell
Loop

End Sub
 
Re : Soustraction de date en vba

Bonjour, tprlechef, CHALET53, le Forum,

Une autre suggestion, à placer dans l'onglet "Encours" :

Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim c As Range
With Sheets("Avenir")
    For i = .Range("a65536").End(xlUp).Row To 2 Step -1
        If .Range("a" & i).Value <> "" And .Range("a" & i).Value <= Date + 8 Then
            With .Range("a" & i)
            .Offset(, 0).Resize(, 3).Cut Destination:=Sheets("Encours").Range("a65536").End(xlUp).Offset(1, 0)
            End With
        .Columns("a:a").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
158
Réponses
6
Affichages
636
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…