Mettre la fonction vba sur une plage

Résolu/Fermé
Antoine.g - Modifié par jordane45 le 12/09/2016 à 13:22
 Antoine.g - 12 sept. 2016 à 14:57
Bonjour,

Je suis débutant en VBA et je bute sur la problématique suivante : je souhaite que cette fonction ci-dessous marche non pas que sur la cellule A1 mais de A1 à A10. Cela fait plusieurs heures que j'essaie mais impossible d'y arriver...
Dim MemoCell As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Cells(1, 1) <> MemoCell Then
       Cells(1, 2) = Now
       MemoCell = Cells(1, 1)
    End If

End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.


Merci d'avance de votre retour!

Antoine

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2016 à 13:25
Bonjour,

On ne sait pas trop ce que tu cherches à faire avec ton code.. donc il nous sera difficile de te répondre ...

Mais bon.. dans le doute... as tu essayé avec une boucle ??
Ou ne pourrais tu pas utilisé le "target" ?

D'où provient cette variable memocell ? Qu'est-ce qu'elle contient ?
Pourquoi l'as tu placée en dehors de ton sub ? Sachant que pour la déclaration en dehors des sub... tu dois utiliser PUBLIC et non DIM...

bref... merci de nous donner tous les détails.
0
Bonjour Jordane45 et merci pour la reponse rapide!

Ce que je souhaite faire c'est marquer la date d'une modification de cellule sur la colonne A sur les lignes 1 à 10 sur une colonne à droite.
Exemple : si la valeur d'A5 se modifie(et uniquement si elle se modifie c'est à dire que si la valeur précédente était 5 et que la nouvelle valeur est 5, on ne fait rien), date en B5.

Pour la variable, j'ai bêtement fait un copier/coller d'un autre sujet... J'ai vraiment très (très, très ...) peu de connaissance en VBA donc pour l'utilisation de "target" je réponds "peut être"... ;-)

J’espère être plus clair sinon n'hésites pas et encore merci!

Antoine
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2016 à 14:12
Il faut donc que tu utilises la méthode Worksheet_Change() et la variable Target.
0
Très bien. Pourrais tu m'envoyer un exemple de code s'il te plait car tout cela reste bien compliqué pour moi...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 12/09/2016 à 14:32
Un truc du genre
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
     Cells(Target.Row, 2).Value = Now
   End If
End Sub



Cordialement, 
Jordane                                                                 
0
Merci mais le problème qui se pose c'est que si on tape une nouvelle valeur qui s'avère être identique, il actualise la date ce que je ne souhaite pas...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2016 à 14:42
Tu peux faire comme ça :

Public oldval
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
oldval = Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
     If Target.Value <> oldval Then
     Cells(Target.Row, 2).Value = Now
     End If
   End If
End Sub


0
Un ÉNORME merci à toi tu as refait ma journée!
Délais et compréhension de la problématique au top!

Bonne continuation Jordane45

Antoine
0