Macro pour fixer des valeurs selon Dates
Bonsoir au forum
Avec l'aide du Forum je suis arrivé à faire cette macro.
Dans cet exemple à chaque changement de la date en A131, les valeurs qui se trouvent en B131,C131,D131....changent. Ce que je n'arrive pas à faire ce que si je change les valeurs en B131;C131;D131...sans changer la Date en A131,les valeurs doivent prendre la place des premières valeurs.
je pense qu'il faut changer au niveau Intersect, mais je n'arrive pas à le faire.
ci-dessous la macro.
si un fichier joint est indispensable faites moi signe.
merci pour votre aide.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A131"), Target) Is Nothing Then
Call DateValeur
End If
End Sub
Sub DateValeur()
Dim Cel As Object
For Each Cel In ActiveSheet.Range("A135:A165")
If Cel = Date - 1 Then
Cel.Select
ActiveCell.Offset(0, 1) = Range("B131").Value
ActiveCell.Offset(0, 2) = Range("C131").Value
ActiveCell.Offset(0, 3) = Range("D131").Value
ActiveCell.Offset(0, 4) = Range("E131").Value
ActiveCell.Offset(0, 5) = Range("F131").Value
ActiveCell.Offset(0, 6) = Range("G131").Value
ActiveCell.Offset(0, 7) = Range("H131").Value
ActiveCell.Offset(0, 8) = Range("I131").Value
ActiveCell.Offset(0, 9) = Range("J131").Value
ActiveCell.Offset(0, 10) = Range("K131").Value
ActiveCell.Offset(0, 11) = Range("L131").Value
ActiveCell.Offset(0, 12) = Range("M131").Value
ActiveCell.Offset(0, 13) = Range("N131").Value
ActiveCell.Offset(0, 14) = Range("O131").Value
ActiveCell.Offset(0, 15) = Range("P131").Value
ActiveCell.Offset(0, 16) = Range("Q131").Value
ActiveCell.Offset(0, 17) = Range("R131").Value
ActiveCell.Offset(0, 18) = Range("S131").Value
ActiveCell.Offset(0, 19) = Range("T131").Value
ActiveCell.Offset(0, 20) = Range("U131").Value
ActiveCell.Offset(0, 21) = Range("V131").Value
ActiveCell.Offset(0, 22) = Range("W131").Value
ActiveCell.Offset(0, 23) = Range("X131").Value
ActiveCell.Offset(0, 24) = Range("Y131").Value
ActiveCell.Offset(0, 25) = Range("Z131").Value
ActiveCell.Offset(0, 26) = Range("AA131").Value
ActiveCell.Offset(0, 27) = Range("AB131").Value
ActiveCell.Offset(0, 28) = Range("AC131").Value
ActiveCell.Offset(0, 29) = Range("AD131").Value
ActiveCell.Offset(0, 30) = Range("AE131").Value
ActiveCell.Offset(0, 31) = Range("AF131").Value
ActiveCell.Offset(0, 32) = Range("AG131").Value
ActiveCell.Offset(0, 33) = Range("AH131").Value
ActiveCell.Offset(0, 34) = Range("AI131").Value
ActiveCell.Offset(0, 35) = Range("AJ131").Value
ActiveCell.Offset(0, 36) = Range("AK131").Value
ActiveCell.Offset(0, 37) = Range("AL131").Value
ActiveCell.Offset(0, 38) = Range("AM131").Value
ActiveCell.Offset(0, 39) = Range("AN131").Value
ActiveCell.Offset(0, 40) = Range("AO131").Value
ActiveCell.Offset(0, 41) = Range("AP131").Value
ActiveCell.Offset(0, 42) = Range("AQ131").Value
ActiveCell.Offset(0, 43) = Range("AR131").Value
ActiveCell.Offset(0, 44) = Range("AS131").Value
ActiveCell.Offset(0, 45) = Range("AT131").Value
ActiveCell.Offset(0, 46) = Range("AU131").Value
ActiveCell.Offset(0, 47) = Range("AV131").Value
ActiveCell.Offset(0, 48) = Range("AW131").Value
GoTo Fin
End If
Next Cel
Fin:
End Sub
Bonjour,
...les valeurs doivent prendre la place des premières valeurs.
C'est quoi les premières valeurs ??
Eventuellement merci de placer un fichier au format XLS (Excel 2003 ou inférieur)
Amicalement
Dan
Edit Dan : En attendant ta réponse à ma question, je pense que la macro existante peut être modifiée comme suit :
Sub DateValeur()
'Macro modifiée par Dan le 18/01/2010
Dim Cel As Range
Dim i As Byte
For Each Cel In ActiveSheet.Range("A135:A165")
If Cel = Date - 1 Then
With Cel
For i = 1 To 46
.Offset(0, i) = Cells(131, i + 1)
Next i
End With
End If
Next Cel
End SubA bientôt
Dan
Bonjour louja, dan,
Petite correction de la boucle for :
For i = 1 To 48Pas 46, d'après le code de louja. Petite erreur d'inadvertance