VBA revenir sur la dernière cellule modifiée

Fermé
JB - 28 oct. 2011 à 13:47
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 2 nov. 2011 à 12:39
Bonjour,

j'ai une macro excel qui me permet d'ajouter 1, 2 ou 3 à une cellule (parmi 10).
J'aimerais pouvoir créer une seconde macro qui sélectionnerai la dernière cellule modifiée afin de pouvoir annuler en cas de fausse manipulation.

Merci de bien vouloir m'aider sur ce problème.
Je n'ai pas trouvé la solution parmi tous les forums que j'ai visité.

Cordialement.
JB
A voir également:

6 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
28 oct. 2011 à 14:24
Bonjour,

En utilisant la même macro (avec un argument adéquat) c'est plus simple.
Il suffit d'utiliser des variables statiques (Static) pour mémoriser l'adresse de la cellule qui vient d'être modifiée et sa valeur et/ou annuler la modification précédente
0
Merci pour la réponse rapide !
Ca reviendrait à avoir une confirmation avant la modification ?
Je ne maitrise que très peu le VBA et je ne connais pas l'utilisation des variables statiques...
Voici un aperçu de mon code.
Merci de m'indiquer où placer ces variables ?

Sub un_coureur()
'
' un_coureur Macro
' multiplie la distance par 1
'
Select Case ActiveCell.Value

Case "VERT"
GoTo couleurvert

Case "JAUNE"
GoTo couleurjaune

Case "BLEU"
GoTo couleurbleu

Case "ROUGE"
GoTo couleurrouge

Case "VIOLET"
GoTo couleurviolet

Case "NOIR"
GoTo couleurnoir

Case "BLANC"
GoTo couleurblanc

Case "ORANGE"
GoTo couleurorange

Case "AUTRE 1"
GoTo couleurautre1

Case "AUTRE 2"
GoTo couleurautre2

End Select
Exit Sub

couleurvert:
Range("E3").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurjaune:
Range("E4").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurbleu:
Range("E5").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurrouge:
Range("E6").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurviolet:
Range("E7").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurnoir:
Range("E8").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurblanc:
Range("E9").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurorange:
Range("E10").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurautre1:
Range("E11").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

couleurautre2:
Range("E12").Select
ActiveCell = ActiveCell + 1
Range("H2").Select

Exit Sub

End Sub
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié par Patrice33740 le 28/10/2011 à 15:34
Bonjour,

Un exemple de ton fichier aurait été plus utile.
Ne sachant pas comment est appelée cette procédure, voici une solution avec 2 boutons (un_coureur et annuler).
Utiliser des boutons ne me semble pas une bonne méthode, mais tu est si avare d'explications...
Option Explicit  

Private Sub btnAnnuler_Click()  
 Call un_coureur(True)  
End Sub  

Private Sub btnUn_coureur_Click()  
 Call un_coureur  
End Sub  

Public Sub un_coureur(Optional Annulation As Boolean = False)  
'  
' un_coureur Macro  
' multiplie la distance par 1  
'  
Static adr As String  

If Annulation Then  
  If adr <> "" Then  
    Range(adr) = Range(adr) - 1  
    adr = ""  
  End If  
  Exit Sub  
End If  

Select Case ActiveCell.Value  
    
  Case "VERT"  
  adr = "E3"  
    
  Case "JAUNE"  
  adr = "E4"  
    
  Case "BLEU"  
  adr = "E5"  
    
  Case "ROUGE"  
  adr = "E6"  
    
  Case "VIOLET"  
  adr = "E7"  
    
  Case "NOIR"  
  adr = "E8"  
    
  Case "BLANC"  
  adr = "E9"  
    
  Case "ORANGE"  
  adr = "E10"  
    
  Case "AUTRE 1"  
  adr = "E11"  
    
  Case "AUTRE 2"  
  adr = "E12"  

  Case Else  
  adr = ""  
    
End Select  
Range(adr).Value = Range(adr).Value + 1  
Range("H2").Select  

End Sub



Cordialement
Patrice
0
encore une fois merci pour la rapidité de la réponse
comment puis-je déposer un exemple de mon fichier ?
l'idée des boutons est essentielle pour moi, puisque ce fichier est destiné à être utilisé par des élèves (donc susceptibles de se tromper)
j'ai donc 3 boutons (1 coureur, 2 coureurs et 3 coureurs) que l'on doit cliquer mais j'ai créé également 3 boutons de correction d'erreur qui ne me satisfont pas (il faut cliquer d'abord sur la dernière cellule modifiée). merci pour ton aide
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
28 oct. 2011 à 17:55
Au lieu des boutons, on peut peut-être utiliser le clic gauche (ou le double clic) pour incrémenter et le clic droit pour décrémenter.
C'est souvent plus simple mais il faut voir le fichier ...
Tu peux déposer ton fichier sur http://cijoint.fr/ ou sur https://www.cjoint.com/ et mettre le lien obtenu dans ton prochain message

Patrice
0
Voici le lien où est déposé mon fichier.
http://www.cijoint.fr/cjlink.php?file=cj201110/cij1eGPeM7.xlsm  

l'idée des clics est à retenir mais ne conviendra sans doute pas pour mon fichier.
ce qui m'intéresse serait un unique bouton qui permettrait d'annuler la dernière modification en cas d'erreur sans avoir à cliquer sur la colonne "total points" puis le bouton correspondant.

Encore merci pour le temps consacré à mon fichier.
Cordialement.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
29 oct. 2011 à 14:22
Bonjour JB,

Voici une proposition sans bouton :
https://www.cjoint.com/?AJDourqr77U

0
Bonjour Patrice33740
un grand merci pour le temps consacré à mon projet !
ca me convient parfaitement et c'est très facile d'utilisation. Je suis emballé !
J'ambitionne alors d'aller un peu plus loin : j'aimerais pouvoir récapituler sur une seconde feuille tous les résultats (à chaque nouveau clic, les résultats se renseignent au fur et à mesure sur la seconde feuille qu'on ne visionnera qu'à la fin de la séquence).
Malgré mes efforts je n'arrive pas à incorporer dans ton code ces commandes.
Peux-tu me proposer un début de réponse ?
D'avance un immense merci !

mon fichier (enfin le tien !) avec la seconde feuille :
http://www.cijoint.fr/cjlink.php?file=cj201111/cij1Stcamw.xlsm
0
Je viens de consulter mes mails et ouah !
D'abord un très grand merci pour le temps consacré à mon projet ! C'est tout à fait ce qui convient pour ce type de manipulation.

Démarrer / Arrêter
clic pour ajouter les points
Annulation grâce clic droit !

C'est simplement au top !

Je vais maintenant m'atteler à améliorer mon projet.
J'ai dans l'idée de créer une page de récapitulatif qui se mettrait à jour à chaque clic et qui serait associé au final avec un barème (je devrais m'en sortir avec la formule recherchev). Je me permettrais de continuer ce post si je rencontre des difficultés.

Encore un immense merci !
Cordialement.
JB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
2 nov. 2011 à 00:21
Bonjour jb,

Voici fichier avec le récapitulatif :
https://www.cjoint.com/?AKcaoFLjg3C

Le fonctionnement est le même, mais le principe est différent :
- Les macros écrivent uniquement dans le récapitulatif.
- La feuille live contient des formules en fonction du récapitulatif.
0
Patrice, c'est tout bonnement extra !!!
Je te remercie vivement aussi bien pour la qualité de ton travail que pour la rapidité (je me rends pas compte mais pour un expert comme toi, c'est si facile que ça à faire ???!!!)
Je tenterais de m'inspirer de ce fonctionnement pour mes futurs fichiers.
Une nouvelle fois merci, je n'ai plus qu'à utiliser ce super outil avec mes élèves.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
2 nov. 2011 à 12:39
Bonjour,

« je me rends pas compte ... c'est si facile que ça à faire ???!!! »
C'est pas très difficile, ça prend un peu de temps à déboguer mais il est toujours intéressant de chercher à simplifier l'interface homme-machine.

Au plaisir de te relire sur le Forum
0