Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai une colonne avec des données.
Si je change l'une de ces données (après avoir tout simplement sélectionné une cellule), je voudrais qu'automatiquement revienne la donnée initiale.
Bien sûr, on pourrait me conseiller de tout simplement protéger la plage en question, mais, voilà, quand je DOUBLE-CLIQUE sur l'une quelconque des cellules de la plage, je voudrais déclencher un événement.

J'ai tenté un bidouillage par macros événementielles. Ma foi, j'ai suivi une certaine logique qui aurait dû tenir la route, mais le résultat est à franchement parler "minable" et ça boucle...

Merci d'avance pour tout conseil.
 

Pièces jointes

  • Cellules bloquées.xlsm
    16.9 KB · Affichages: 85

soenda

XLDnaute Accro
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Bonsoir Magic_Doctor

On pourrait aussi sauvegarder le contenu de la plage que l'on ne veut pas changer,
à l'ouverture du classeur et la recopier à la fermeture du classeur.

Cordialement
 

david84

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Bonjour,
à tester :
Code:
Private Sub Worksheet_Change(ByVal target As Range)
If Not Intersect(target, [MonTablo]) Is Nothing Then Application.Undo
End Sub
A+
 

DoubleZero

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Bonjour, le Fil :), le Forum,

A tester, itou :

Code:
Private Sub Worksheet_Change(ByVal target As Range)
    Application.EnableEvents = False
    If Not Intersect(target, [MonTablo]) Is Nothing Then Application.Undo
    Application.EnableEvents = True
End Sub

A bientôt :)
 

Magic_Doctor

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Bonjour David84

Bonne question, car j'aimerais bien comprendre l'explication.
Ta solution est la même que celle de DoubleZero, à la différence près que la sentence :
VB:
If Not Intersect(target, [MonTablo]) Is Nothing Then Application.Undo
est "encadrée" par :
VB:
Application.EnableEvents = False
    If Not Intersect(target, [MonTablo]) Is Nothing Then Application.Undo
Application.EnableEvents = True
Et si on ne met pas cet "encadrement" et bien... ça plante, en tout cas chez moi.
 

néné06

XLDnaute Accro
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Bonjour Magic_doctor, le Fil,

Le programme plante car sans Application.EnableEvents=False , lors du changement de valeur de la cellule "If Not Intersect(target, [MonTablo]) Is Nothing Then Application.Undo", le programme revient à la procédure "Private Sub Worksheet_Change(ByVal target As Range)" et reboucle sans arrêt jusqu'au plantage:
Enfin, je pense ???

A titre info, j'ai mangé la Socca chez "PIPO" en pensant à toi car elle est vraiment au top !!!!

A+

René
 

david84

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Re
Et si on ne met pas cet "encadrement" et bien... ça plante, en tout cas chez moi
"Ça plante" n'est pas suffisant pour comprendre et reproduire le problème éventuel...
Parle-tu du fichier exemple fourni ou des tests effectué dans ton classeur original ?
Où cela plante-t-il en pas à pas ?
As-tu bien effacé la Private Sub Worksheet_SelectionChange et ton module public qui ne servent plus à rien (dans ton fichier exemple) ?
En tout cas, chez moi aucun bug constaté (sous Excel 2010).
A+
 

Magic_Doctor

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Re

Le mieux est que je joigne le classeur.
Dans le module de feuille j'ai mis "Application.EnableEvents = False/True" en REM.
Immense plantage --> avertissement "Espacio de pila insuficiente" (en espagnol bien sûr).
Fais l'essai.

néné06, t'as bien de la chance de déguster une bonne socca, car ici la socca, pardon le "fainá", est épaisse et absolument mouligasse. Comme les pizzas : épaisses, mouligasses, pas d'anchois (personne n'aime ces bestioles ici) pas de bonnes petites olives noires (ils mettent de temps en temps des rondelles d'olives vertes...). Et la viande : carbonisée avec presque autant de gras que de maigre... Pas de moutarde qui arrache le pif. C'est le monde du sans saveur...
¡Decididamente, se come demasiado bien en Francia!
 

Pièces jointes

  • Cellules bloquées3.xlsm
    15.3 KB · Affichages: 37

david84

XLDnaute Barbatruc
Re : Conserver le contenu d'une cellule quoi que l'on tente d'y rentrer (VBA)

Re
pas besoin de tester ton classeur : j'ai testé ton fichier exemple sur une version 2007 et effectivement cela crée le problème d'espace pile insuffisant. Le problème semble donc provenir de la manière dont est géré l'événement Change dans Excel 2007 car cela ne se produit pas avec la version 2010.
A+
 
Dernière édition:

Statistiques des forums

Discussions
312 273
Messages
2 086 701
Membres
103 373
dernier inscrit
Edouard007