Bonjour, je suis débutante dans l'utilisation des vba sur excell et aurai donc besoin d'aide.
aprés avoir cherché longuement sur le net j'ai enfin trouvé la formule dont j'avais besoin ( appliquer une date figée lorsque la cellule à côté est remplie)
mais souhaiterai l'appliquer sur une autre colonne de ma feuille excell
voici le code ( grand merci à la personne ayant posté cette aide-cyril 91640 ) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns("d")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Target.Offset(0, 1) = Now
End If
End Sub
j'aimerai que ce code s'applique également sur plusieurs autres colonnes de mon fichier par exemple colonne " i" ( pour la date de fin )
comment ajouter ces contraintes à ce code ? j'ai essayé des " ;" des "(" aprés le "Columns("d")) mais rien ne fonctionne.
de plus et pour finaliser mon tableau si c'est possible je souhaiterai appliquer une colonne ( dans mon fichier , colonne G) qui prendrai donc en compte ma date initiale (colonne E) , le délai appliqué (colonne f).
une simple formule ( =E14+F14) ne fonctionne pas car ne prends pas en compte les heures et jours ouvrés.
pourriez vous m'aider ?
merci d'avance
Re : copie d'une vba( date figée) sur plusieurs colonnes + calcul de délai
Bonsoir,
Pour le code, il te faut utiliser la fonction Union() (union de Range) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Union(Columns("D"), _
Columns("I"))) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Target.Offset(0, 1) = Now
End If
End Sub
Pour la formule, il faut tout d'abords que tu sache comment Excel calcule les dates.
Pour Excel, une journée est représentée par 1 donc, une heure est la 24ème partie de 1 soit h=1/24 donc, ta formule doit être :
Re : copie d'une vba( date figée) sur plusieurs colonnes + calcul de délai
Re,
Code que tu peux simplifier de cette façon :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'pas nécessaire d'aller plus loin si plus d'un cellule
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, _
Range("D:D,I:I")) Is Nothing Then
Target.Offset(0, 1) = Now
End If
End Sub
Re : copie d'une vba( date figée) sur plusieurs colonnes + calcul de délai
Bonjour, hervé merci beaucoup pour ton aide. le code simplifié fonctionne parfaitement. pour le calcul de délai cela fonctionne également. Néanmoins j'aimerai qu'il prenne en compte les heures et jours ouvrés je vais chercher davantage sur le forum. merci encore pour le temps accordé à mon problème bonne journée.