Salut Jacques, salut le forum,
Ci-dessous la macro modifiée de l'événement Change de l'onglet Saisie. Maintenant quand tu entres un date les formules s'écrivent. Attention, si tu effaces la date, toutes la ligne s'efface.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Isect As Range
Static IsOn As Boolean
If IsOn Then
IsOn = False
Exit Sub
End If
'***************** PARTIE RAJOUTÉE ****************************
If Target.Column = 1 Then 'si le changement a lieu dans la colonne A
If Target.Value = "" Then 'condition : si la date est effacée
'efface toute la ligne
IsOn = True: Range(Cells(Target.Row, 2), Cells(Target.Row, 44)).ClearContents
Target.Select 'sélectionne la cellule
Exit Sub 'sort de la procédure
End If 'fin de la condition
'place les formules dans les cellules adéquates
IsOn = True: Target.Offset(0, 1).FormulaR1C1 = _
"=IF(RC[4]="""","""",VLOOKUP(RC[4],Données,2))"
IsOn = True: Target.Offset(0, 3).FormulaR1C1 = _
"=IF(RC[2]="""","""",VLOOKUP(RC[2],Données,3))"
IsOn = True: Target.Offset(0, 4).FormulaR1C1 = _
"=IF(RC[1]="""","""",IF((VLOOKUP(RC[1],Données,5))=0,(VLOOKUP(RC[1],Données,3)),(VLOOKUP(RC[1],Données,5))))"
IsOn = True: Target.Offset(0, 6).FormulaR1C1 = "=IF(RC[-1]="""",""0"",VLOOKUP(RC[-1],Données,4))"
IsOn = True: Target.Offset(0, 34).FormulaR1C1 = "=SUM(RC[-26]:RC[-1])"
'cette fonction ci-dessous plante chez moi avec la version Excel 2000...
IsOn = True: Target.Offset(0, 36).FormulaR1C1 = "=NO.SEMAINE(RC[-36])"
IsOn = True: Target.Offset(0, 37).FormulaR1C1 = "=SUM(RC[-3]:RC[-2])"
IsOn = True: Target.Offset(0, 38).FormulaR1C1 = "=RC[-4]*RC[-32]"
IsOn = True: Target.Offset(0, 39).FormulaR1C1 = "=IF(RC[-2]=0,0,RC[-5]*100/RC[-2])"
IsOn = True: Target.Offset(0, 40).FormulaR1C1 = "=RC[-3]*RC[-34]"
IsOn = True: Target.Offset(0, 41).FormulaR1C1 = "=CONCATENATE(RC[-5],""/"",RC[-40],""/"",RC[-36])"
IsOn = True: Target.Offset(0, 42).FormulaR1C1 = "=CONCATENATE(RC[-6],""/"",RC[-41],""/"",RC[-38])"
IsOn = True: Target.Offset(0, 43).FormulaR1C1 = "=CONCATENATE(RC[-7],""/"",RC[-42])"
Exit Sub 'sort de la procédure
End If 'fin de la condition "changement dans colonne A"
'***************** FIN PARTIE RAJOUTÉE ************************
Set Isect = Application.Intersect(Target, Range("désignationsaisie"))
If Isect Is Nothing Then Exit Sub
With Target
If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
If .Value = "" Then Exit Sub
Range("F1").Value = .Value
With .Validation
.Modify Formula1:="=Listenomsdonnées"
End With
End With
SendKeys "%{DOWN}", False
IsOn = True
End Sub
À plus,
Robert