Enregistre contenue de cellule avant changement

Bonjour Le Forum,

J'ai de C7 à C31 plusieurs valeur. (du genre "

Si je change la valeur d'une de ces cellules elle est au préalable enregistré dans la colonne P.

Mon code pensé était le suivant:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As Integer
    For x = 7 To 31
        If Target.Address = Cells(x, 3).Address Then
        Selection.Copy
        End If
        If Cells(x, 3).Change Then
        Cells(x, 16) = Selection.Paste
        End If
    Next x
End Sub

Malheureusement

If Cells(x, 3).Change Then

ça ne doit pas exister il faut croire

Merci d'avance !!

Sebyg

Bonjour,

Un essai :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Lig As Long

'A ce stade la cellule souhaitée est déjà modifiée, et donc son ancien contenu perdu...
If Not Intersect(Target, Range("C7:C31")) Is Nothing Then 
     Lig = Target.Row
     Range("P" & Lig) = Range("AAA" & Lig) 'Récupère l'ancienne valeur stockée en colonne AAA
     Range("AAA" & Lig) = Target 'Stocke la nouvelle valeur en colonne AAA
End If

End Sub

Bonjour

Bonjour à tous

Une variante à tester.

Bye !

23classeur1-v1.xlsm (19.62 Ko)

Bonjour et Merci à vous !

J'ai test les deux techniques elle fonctionnent parfaitement.

Une macro utilise une colonne intermédiaire celle de Pedro22.

Et Celle de gmb...

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim v
    If Not Intersect(Target, Range("C7:C37")) Is Nothing Then
        Application.EnableEvents = False
        v = Target.Value 'Stock la nouvelle donnée
        Application.Undo 'Annule la dernière opération donc efface la nouvelle donnée
        Range("P" & Target.Row) = Range("C" & Target.Row) 'Colle l'ancienne donné dans P
        Target = v 'Colle la nouvelle donnée stocké
    End If
    Application.EnableEvents = True
End Sub

Sub Evenement()
    Application.EnableEvents = True
End Sub

Je ne comprend malheureusement pas tout.. Suis-je obligé d'écrire "Option Explicit" ? La macro événement à quoi sert-elle ?

Suis-je obligé d'écrire "Option Explicit" ?

Non,,pas du tout.

C'est une précaution qui oblige le l'auteur de la macro à déclarer ses variables, en évitant ainsi certains bugs éventuels...

La macro événement à quoi sert-elle ?

A rien !

Tu peux l'effacer comme j'aurais dû le faire.

Elle m'a servi lors de la mise au point de la macro.

En effet, lorsqu'on écrit une macro événementielle, il est prudent de désactiver dès le démarrage le lancement automatique de ce type de macro, faute de quoi on risque de provoquer l'exécution imprévue d'autres macros de façon intempestive, et donc de provoquer des bugs;

La dernière instruction doit alors rétablir leur déclenchement automatique.

Si en cours de test la maro bugue, la dernière instruction n'a pas été exécutée puisque qu'ella s'est arrêtée avant.

Et on se retrouve alors avec notre macro qui ne s'exécute plus automatiquement.

Il faut alors fermer le fichier et le réouvrir pour relancer Excel.

Ou écrire et lancer à la main la macro "Sub Evenement"

OK ?

Bye !

Ah oui D'accord !!! Super très bonne explication !!

Merci Beaucoup !

Rechercher des sujets similaires à "enregistre contenue changement"