Code macro à appliquer à plusieurs cellules

Bonjour à tous,

Je suis débutante en macro, à l'aide de différents forums j'ai écrit un code macro pour que lorsque je remplis la cellule D8, la cellule H10 rentre automatiquement l'heure (sans modification lorsqu'on ré ouvre le fichier) et celui-ci fonctionne très bien :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Target.Address = "$D$8" Then Exit Sub

If Target.Value = "" Then

Range("H10").Value = ""

Else

Range("H10").Value = Format(Date, "dd/mm/yyyy")

End If

End Sub

Je voudrais faire la même chose sur ma feuille 2 mais pour plusieurs cellules j'ai donc écrit le code ci-dessous mais cela ne fonctionne que pour la première cellule et pas pour les deux suivantes. Est-ce que quelqu'un pourrait m'expliquer mon erreur ?

Je vous remercie par avance de votre aide.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Target.Address = "$D$10" Then Exit Sub

If Target.Value = "" Then

Range("H12").Value = ""

Else

Range("H12").Value = Format(Date, "dd/mm/yyyy")

End If

If Not Target.Address = "$D$38" Then Exit Sub

If Target.Value = "" Then

Range("H40").Value = ""

Else

Range("H40").Value = Format(Date, "dd/mm/yyyy")

End If

If Not Target.Address = "$D$61" Then Exit Sub

If Target.Value = "" Then

Range("H63").Value = ""

Else

Range("H63").Value = Format(Date, "dd/mm/yyyy")

End If

End Sub

Bonjour,

If Not Target.Address = "$D$10" Then Exit Sub

tu quittes sur toute autre cellule.

En pas à pas tu l'aurais vu tout de suite, regarde les cours sur le débogage.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union([D10], [D38], [D61])) Is Nothing Then Exit Sub
    If Target.Value = "" Then Target.Offset(2, 4) = ""
End Sub

pas vraiment besoin de mettre le format à chaque fois. Met-le en manuel sur la feuille il restera.

eric

Bonjour Eriiic,

avec un p'tit complèment

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union([D10], [D38], [D61])) Is Nothing Then Exit Sub
    If Target.Value = "" Then
    Target.Offset(2, 4) = ""
    Else
    Target.Offset(2, 4).Value = Date
    End If
End Sub

Bonjour,

Je vous remercie pour vos réponses aussi rapide. J'ai essayé le code de M12 mais cela ne fonctionne pas, j'ai peut-être loupé une étape...

Re,

Ou as tu mis le code ?

Je clique droit sur mon onglet, puis visualiser le code et je l'ai copié.

Re

A tester

7igoor.xlsm (15.21 Ko)

Re

A tester

Igoor.xlsm

Je vous remercie, j'ai trouvé le problème : ca venait de mes cellules qui étaient fusionnées !

Le code fonctionne très bien, merci.

J'ai une dernière question, si vous avez un peu de temps : était-il possible de bloquer la cellule où apparaît l'heure avec la fonction protect car la protection ne fonctionne pas avec les macros ?

Re,,

a mettre à ta sauce

Private Sub Worksheet_Change(ByVal Target As Range)
    Feuil2.Unprotect "mdp" 'mdp pour mot de passe
    If Intersect(Target, Union([D10], [D38], [D61])) Is Nothing Then Exit Sub
    If Target.Value = "" Then
    Target.Offset(2, 4) = ""
    Else
    Target.Offset(2, 4).Value = Date
    End If
    Feuil2.Protect "mdp"
End Sub

Merci.

Bonne journée.

Rechercher des sujets similaires à "code macro appliquer"