Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

application undo

M

modus57

Guest
Bonsoir le forum, voilà mon petit problème

La cellule A1 contient un nombre X.
La cellule A2 contient un nombre Y.

Après la saisie d’un nombre Z en A1, un Inputbox m’invite à saisir un nombre quelconque qui sera qui sera copié en A2 .

Si aucune valeur n’a été saisie dans l’Inputbox, retour à la valeur X en A1

J’ai essayé ce petit bout de code, ça ne fonctionne pas (boucle sans fin)

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

If Target <> [A1] Then Exit Sub
If [A1] = 0 Then
[A2] = 0
Else
If IsNumeric(UserEntry) Then
UserEntry = InputBox('SAISIR UN NOMBRE ')

If UserEntry = '' Then
Application.Undo ‘retour à la valeur X en A1
Exit Sub
Else
Range('A2').Value = UserEntry
End If
End if
End If
End Sub

Merci d’avance pour votre aide à +
 
M

modus57

Guest
Rebonsoir j'ai une petite erreur dans le code, voici le code modifié :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

If Target <> [A1] Then Exit Sub
If [A1] = 0 Then
[A2] = 0
Else
UserEntry = InputBox('SAISIR UN NOMBRE ')
If IsNumeric(UserEntry) Then
If UserEntry = '' Then
Application.Undo ‘retour à la valeur X en A1
Exit Sub
Else
Range('A2').Value = UserEntry
End If
End if
End If
End Sub

J'espère que c'est plus clair, à bientôt
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir modus57,

Tu peux essayer comme ça :
Cordialement,
 
M

modus57

Guest
modus57 écrit:
Super Didier, ça marche.
Ta réponse rapide c'est sympa !

Merci beaucoup et bonne nuit

Didier c'est encore moi pour un point de détail.

J'ai intégré ton code dans ma procédure il fonctionne très bien.
Est-il possible d'interdire la saisie de texte dans la cellule A1.
J'ai essayé <Donées =>Validation> mais je ne trouve pas la bonne formulation.
Pourrais-tu faire un petit effort et modifier ton code en conséquence car je suis moyen dans ce domaine.

Un grand merci et re +
 

myDearFriend!

XLDnaute Barbatruc
Re modus57,

Je pense effectivement qu'il convient d'utiliser autant que possible les possibilités 'naturelles' d'Excel et donc de régler ton problème par Données / Validation...

Pour ce faire :
[ol][li]Tu sélectionnes la cellule A1[/li]
[li]Tu fais menu Données / Validation... onglet 'Options'[/li]
[li]Autoriser : tu choisies 'Nombre Entier'[/li]
[li]Données : tu choisies 'Comprises entre'[/li]
[li]Minimum : 0 (à adapter)[/li]
[li]Maximum : 1000 (à adapter)[/li]
[li]Ignorer si vide : Coché[/li]
[li]Onglet 'Alerte d'erreur'[/li]
[li]Quand des données non valides sont tapées : Coché[/li]
[li]Style : 'Arrêt'[/li]
[li]Titre : Ce que tu veux[/li]
[li]Message d'erreur: Ce que tu veux[/li]
[li]Et tu valides finalement par OK.[/li][/ol]Ci-joint un exemple pour illustrer cette façon de faire...

Cordialement, [file name=PourModus57.zip size=7310]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourModus57.zip[/file]
 

Pièces jointes

  • PourModus57.zip
    7.1 KB · Affichages: 40

myDearFriend!

XLDnaute Barbatruc
Sinon, si tu veux vraiment tout faire par VBA, tu peux peut-être essayer :
 
M

modus57

Guest
Bonjour Didier, un grand salut au forum

Désolé je n’ai pas pus te répondre plus tôt

J’ai intégré tes lignes de codes dans ma procédure ça marche du tonnerre

T 1 kosto

Merci pour ton aide .
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…