Macro soustraction cellule figée

Bonjour,

Je débute un peu dans le monde des macros, et j'arrive pas à faire la chose suivante:

Lorsque qu'une cellule de la colonne 6 a un contenu, faire automatiquement l'opération : colonne 6 - $A$1 sur la colonne 7 ; (Autrement dit, si contenu sur F5, faire F5-$A$1 sur G5)

J'ai pour le moment réussi à faire ce genre de choses, automatiser un horodatage conditionné par le remplissage de la cellule d'une colonne en amont (et youpi ça fonctionne!) et je pensais je partir sur la même base de code:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Count = 1 Then Target.Offset(, 2) = Now()

il me semble que le problème vient du fait que je mélange des colonnes et une cellule particulière dans mon code. (en l'occurence $A$1)

Merci pour votre aide

Bonjour,

dans quelle colonne faut-il mettre le résultat de cette opération colonne 7-A1 ?

Bien vu, j'ai édité mon message, il faut mettre en colonne 7 le résultat de l'opération colonne 6 -$A$1

Merci à toi

re-bonjour,

une proposition

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 6 And Target.Count = 1 Then
        Application.EnableEvents = False
        Target.Offset(, 1) = Target - Range("A1")
        Application.EnableEvents = True
    End If
End Sub

Re-bonjour,

Merci pour ta solution, qui malheureusement n'est pas totalement adaptée à mon cas de figure, que je vais mieux adapter. La finalité de l'opération est en fait de calculer une différence d'heures entre deux dates (au format jj/mm/aaaa hh/mm/ss), j'ai donc modifié ta ligne de code pour incorporer ENT((X-Y)*24) qui permet d'avoir un résultat exprimé en heures, mais ça semble faire bug le code: j'ai la première ligne qui se surligne en jaune:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Count = 1 Then Target.Offset(, 2) = Now()

If Target.Column = 4 And Target.Count = 1 Then Target.Offset(, 2) = Now()

If Target.Column = 6 And Target.Count = 1 Then

Application.EnableEvents = False

Target.Offset(, 1) = ENT((Target - Range("A1")) * 24)

Application.EnableEvents = True

End If

End Sub

re-bonjour,

la fonction ENT n'existe pas en VBA, utilise INT

Merci t'es un chef, exactement ce que je voulais.

Rechercher des sujets similaires à "macro soustraction figee"