Mettre la fonction vba sur une plage

Résolu/Fermé
Signaler
-
 Antoine.g -
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

Messages postés
34263
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 décembre 2021
3 868
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.
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
Messages postés
34263
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 décembre 2021
3 868
Il faut donc que tu utilises la méthode Worksheet_Change() et la variable Target.
Très bien. Pourrais tu m'envoyer un exemple de code s'il te plait car tout cela reste bien compliqué pour moi...
Messages postés
34263
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 décembre 2021
3 868
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                                                                 
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...
Messages postés
34263
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 décembre 2021
3 868
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


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