Un nouveau coup de pouce

Hello @FFO ou @Mimimathy
j’ai dans un fichier un code vba qui fonctionne en verifiant la date du jour
je voudrais que la ligne en gras prennent en compte la date -1, j’ai essayer de mettre un:
If Wd.Cells(Dl - 1, 1).Value = Date -1 Then
et un
Else
Wd.Cells(Dl, 13).Value = Ws.Range(« H22 »)
sans oublié le End if, sauf que si je fais debogage ça me mets « Else sans if »
comment faire pour que le else soit pris en compte ou faut il carrément refaire une private sub a part
merci d’avance

`Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(« D2:D4:H22 »)) Is Nothing Then
Dim i%, Dl%, DIPlueValue, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets(« Valeur »)
Set Wd = Sheets(« Montant »)
Dl = Wd.Range(« A » & Rows.Count).End(xlUp).Row + 1

If Wd.Cells(Dl - 1, 1).Value = Date Then
Wd.Cells(Dl - 1, 1).Value = Date
Wd.Cells(Dl - 1, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl - 1, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl - 1, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl - 1, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl - 1, 8).Value = Ws.Range(« F3 »)
Wd.Cells(Dl - 1, 13).Value = Ws.Range(« H22 »)

Else
Wd.Cells(Dl, 1).Value = Date
Wd.Cells(Dl, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl, 8).Value = Ws.Range(« F3 »)
Wd.Cells(Dl, 13).Value = Ws.Range(« H22 »)

End If
End If
End Sub`

le fichier se presente comme cela


et la derniere ligne du tableau gauche est remplie le jour même et celui de droite le lendemain mais a la date de la veille

Bonjour

Je viens de tester je n’ai pas ce constat en réalisant un débogage

Attention au caractère en trop juste avant Private et à la fin de End Sub

non ce code la fonctionne, c’est quand je rajoute le if date -1

les caractères en trop c’est le forum qui les rajoute en selectionnant texte preformater

Donnes moi tout le code qui pose problème tel quel

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(« D2:D4:H22 »)) Is Nothing Then
Dim i%, Dl%, DIPlueValue, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets(« Valeur »)
Set Wd = Sheets(« Montant »)
Dl = Wd.Range(« A » & Rows.Count).End(xlUp).Row + 1

If Wd.Cells(Dl - 1, 1).Value = Date Then
Wd.Cells(Dl - 1, 1).Value = Date
Wd.Cells(Dl - 1, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl - 1, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl - 1, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl - 1, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl - 1, 8).Value = Ws.Range(« F3 »)
If Wd.Cells(Dl - 1, 1).Value = Date - 1 Then
Wd.Cells(Dl - 1, 13).Value = Ws.Range(« H22 »)

Else
Wd.Cells(Dl, 1).Value = Date
Wd.Cells(Dl, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl, 8).Value = Ws.Range(« F3 »)
Else
Wd.Cells(Dl, 1).Value = Date - 1
Wd.Cells(Dl, 13).Value = Ws.Range(« H22 »)

End If
End If
End If
End Sub

Essaies comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(« D2:D4:H22 »)) Is Nothing Then
Dim i%, Dl%, DIPlueValue, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets(« Valeur »)
Set Wd = Sheets(« Montant »)
Dl = Wd.Range(« A » & Rows.Count).End(xlUp).Row + 1

If Wd.Cells(Dl - 1, 1).Value = Date Then
Wd.Cells(Dl - 1, 1).Value = Date
Wd.Cells(Dl - 1, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl - 1, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl - 1, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl - 1, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl - 1, 8).Value = Ws.Range(« F3 »)
Else
Wd.Cells(Dl, 1).Value = Date
Wd.Cells(Dl, 2).Value = Ws.Range(« D5 »)
Wd.Cells(Dl, 4).Value = Ws.Range(« D3 »)
Wd.Cells(Dl, 6).Value = Ws.Range(« J2 »)
Wd.Cells(Dl, 7).Value = Ws.Range(« F5 »)
Wd.Cells(Dl, 8).Value = Ws.Range(« F3 »)
If Wd.Cells(Dl - 1, 1).Value = Date - 1 Then
Wd.Cells(Dl - 1, 13).Value = Ws.Range(« H22 »)
Else
Wd.Cells(Dl, 1).Value = Date - 1
Wd.Cells(Dl, 13).Value = Ws.Range(« H22 »)
End If
End If
End If
End Sub

Dis moi

merci, ça fonctionne, en gros il faut mettre chaque « Else » apres le « if » correspondant

Et oui c est toujours :
If
Else
End If

Ou
If
End If

On peux aussi tout mettre sur une même ligne sans End If
If condition then résultat

Au plaisir

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.