Macro : Mémoriser une position afin d'y revenir après un déplacement

Gedch

XLDnaute Occasionnel
Bonjour

Je me déplace constamment dans mon tableau (qui est très long)

Souvent j’ai besoin d’aller sur une ligne pour consulter une donnée
Puis je dois revenir sur la même ligne où j’étais avant

Il me faut donc mémoriser la ligne ou je me trouve pour pouvoir y revenir

Problème inévitable, si la consultation des données est plus ou moins longue
Il m’arrive fréquemment d’oublier la ligne où j’étais

Serait-il possible avec macro de faire en sorte que je puisse revenir sur la position précédente ?

Ex :
Je me trouve sur la ligne 210
Je vais sur la ligne 840 pour consulter une donnée
Puis je souhaite à l’aide d’une macro revenir sur la ligne 210
(La colonne où je me trouvais n’est pas très importante)

Merci d’avance si quelqu’un à la solution
 

Dranreb

XLDnaute Barbatruc
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour.
Je m'étais fabriqué, il y a un bon bout de temps un petit contrôle liste de barre d'outils qui travaillait avec la propriété PreviousSelections. Mais je n'en retrouve pas trace chez moi. je dois l'avoir au bureau.
À+
 

Pierrot93

XLDnaute Barbatruc
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour gedch, Hasco:), Bernard,

Une autre solution pour le fun, mémorise les déplacements sur différentes feuilles et autorise des retours arrière successifs… CTRL+r pour retour arrière...

Bonne journée
@+
 

Pièces jointes

  • classeur2.zip
    10.4 KB · Affichages: 55
  • classeur2.zip
    10.4 KB · Affichages: 55
  • classeur2.zip
    10.4 KB · Affichages: 57

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour le fil, bonjour le forum,

Un peu en retard... En pièce jointe une proposition avec la macro événementielle SelectionChange et une procédure Retour qui réagit au raccourci clavier [Ctrl]+[r].
Tu peux revenir en arrière sur les 20 dernières sélections avec le code ci-dessous.
• Dans le composant Feuil1(feuil1) (par exemple) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection
If test = True Then Exit Sub 'si la variable test est vrai, sort de la procédure
On Error GoTo suite1 'si une erreur est générée, va à l'étiquette "suite1"
'si la première variable du tableau de variables tb est vide, attribue à la première variable l'adresse de la cellule active (génère une erreur si le tableau est vide...)
If tb(0) = "" Then tb(0) = ActiveCell.Address
GoTo suite2 'va à l'étiquette "suite2
 
suite1: 'étiquette (arrive ici si le tableau de variale tb n'a pas e''e initialisé)
ReDim Preserve tb(0) 'redimensionne le tableau de variable tb
tb(0) = ActiveCell.Address 'attribue à la première variable l'adresse de la cellule active
Exit Sub 'sort de la procédure
 
suite2: 'étiquette (arrive ici si le tableau a été initilisé)
On Error GoTo 0 'annule la gestion des erreurs
If UBound(tb) < 19 Then 'condition : si le tableau contient mois de 20 variables
    ReDim Preserve tb(UBound(tb) + 1) 'redimensionne le tableau (ajoute une variable)
    tb(UBound(tb)) = ActiveCell.Address 'attribue à la nouvelle variable l'adresse de la cellule active
Else 'sinon (quand le tableau contient 20 variables)
    For x = 0 To UBound(tb) - 1 'boucle sur les 19 premières variables
        tb(x) = tb(x + 1) 'attribue à la variable la valeur de la variable précédent
    Next x 'prochaine variable de la boucle
    tb(19) = ActiveCell.Address 'attribue à la dernière variables la valeur de la cellule active
End If
End Sub

• Dans un module (Module1 par exemple) :
Code:
Public tb() As String 'déclare le tableau de variables tb (TaBleau des adresses)
Public test As Boolean 'déclare la variable test
 
 
Sub retour() 'procédure de retour sur les 20 dernières cellules sélectionnées
' Touche de raccourci du clavier: Ctrl+r
test = True 'définit la variable test (évite l'exécution de la macro événementielle SelectionChange)
On Error GoTo fin 'gestion des erreurs, va a l'étiquette "fin" si une erreur est générée
For x = 0 To UBound(tb) 'boucle sur toutes les variables du tableau de variables tb
    If tb(x) = ActiveCell.Address Then 'condition : si la variable est l'adresse de la cellule active
        Range(tb(x - 1)).Select 'sélectionne l'adresse de la variable précédente
        test = False 'réinitialise la variable test
        Exit Sub 'sort dela procédure
    End If 'fin de la condition
Next x 'prochaine variable de la boucle
 
fin: 'étiquette
test = False 'réinitialise la variable test
MsgBox "Vous ne pouvez plus retourner en arrière !" 'message
End Sub

Le fichier :

[Édition]Pierrot on s'est croisé... J'suis vert !
 

Pièces jointes

  • Gedch_v01.xls
    31 KB · Affichages: 63
Dernière édition:
G

Guest

Guest
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour tous,
Bernard, Pierrot, Robert

Pour le fun, avec previousselection, qui, pour rappel, ne fonctionne qu'avec les selections faites par Atteindre (ctrl+t) ou par la zone des noms (à côté de la barre de formule) ou avec application Goto.

Dans module de la feuille (ou du classeur)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Goto Target 'pour mettre en oeuvre PreviousSelection
End Sub



Module général
Code:
Sub Retour()
On Error Resume Next ' au cas où previousSelection n'aurait pas été initialisé 
With 
Application
    If UBound(.PreviousSelections) > 1 Then 
Application.Goto .PreviousSelections(2) 'position Précédente dans la pile
End With
End Sub

A+
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour HASCO


Ta macro est parfaite
Je l’ai retranscrit dans ma feuille, cela fonctionne parfaitement

J’ai remarqué que en tapant encore sur la macro,
Cela me permet de faire des allers et retours entre les 2 cellules

C’est plus que j’en espérais

Un grand merci

Est-ce qu’il serait imaginable d’en faire une variante qui permettrait de remonter sur les 2 ou 3 positions antérieures ?
 
G

Guest

Guest
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour,

Nous sommes 4 à t'avoir répondu, avec des solutions différentes, à toi de les étudier, de voir ce qui te convient, de faire des tests et de revenir ici(avec tes essais) si cela bloque quelque part.

A+
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour PIERROT

Ta réponse est arrivée pendant que je mettais en application la macro de HASCO

Ta macro correspond semble correspondre à ma 2ème suggestion que je viens de faire à HASCO

Avantage, on semble pouvoir remonter pratiquement indéfiniment sur toutes les positions antérieures

Désavantage en conséquence : On perd la possibilité d’allers et retours entres les positions

Je te remercie pour cette macro

Peut-être serait-il possible de limiter la remontée sur un nombre précis de positions ?
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour à tous

Je vois que je suis verni

4 réponses pour ma demande !

Je regarde cet après-midi les autres solutions
Je reviens sitôt après sur le forum

Merci à tous en attendant
 

Pierrot93

XLDnaute Barbatruc
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Re,
bonjour Robert:)

Désavantage en conséquence : On perd la possibilité d’allers et retours entres les positions
regarde cette nouvelle version, ctrl+r pour retour arrière, ctrl+t pour le suivant... dès l'instant ou r a été activé...
 

Pièces jointes

  • classeur2.zip
    10.8 KB · Affichages: 50
  • classeur2.zip
    10.8 KB · Affichages: 42
  • classeur2.zip
    10.8 KB · Affichages: 38

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour Robert

Je viens d’essayer ta proposition

Le retour sur 20 positions antérieures est plus que suffisante

Fonctionnement : parfait

Un peu dommage par contre que l'on ne puisse pas aller dans l’autre sens


Merci
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Bonjour Pierrot

Je voulais essayer ta nouvelle macro
Mais j’ai un code 400 sans autre explication qui s’affiche dès que je tape l’une ou l’autre macro

Sans doute une petite erreur

Merci
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Re-bonjour Robert

Je viens de consulter plus en détail ta proposition
Je me suis aperçu que tu as eu la bonne idée de détailler toutes les fonctions qui composent ta macro

Du coup je me suis essayé d’en faire une autre qui aille dans l’autre sens
Ce qui n’a pas été bien compliqué, tant tes explications étaient explicites

Maintenant, je peux donc aller dans les 2 sens

Peut être que cette 2ème macro aurait être plus courte ?
Mais cela fonctionne complètement

Code:
Sub avant() 'procédure de retour sur les 20 dernières cellules sélectionnées
' Touche de raccourci du clavier: Ctrl+r

test = True 'définit la variable test (évite l'exécution de la macro événementielle SelectionChange)
On Error GoTo fin 'gestion des erreurs, va a l'étiquette "fin" si une erreur est générée
For x = 0 To UBound(tb) 'boucle sur toutes les variables du tableau de variables tb
    If tb(x) = ActiveCell.Address Then 'condition : si la variable est l'adresse de la cellule active
        Range(tb(x + 1)).Select 'sélectionne l'adresse de la variable suivante
        test = False 'réinitialise la variable test
        Exit Sub 'sort dela procédure
    End If 'fin de la condition
Next x 'prochaine variable de la boucle
 
fin: 'étiquette
test = False 'réinitialise la variable test
MsgBox "Vous ne pouvez plus retourner en arrière !" 'message
End Sub
 

Gedch

XLDnaute Occasionnel
Re : Macro : Mémoriser une position afin d'y revenir après un déplacement

Re Robert

J'ai un gros souci pour retranscrire les macros dans ma feuille

Je joins une copie d'écran de l'erreur
qui ne se situe pas dans le module
mais dans la feuille





erreuro.png
[/URL] Uploaded with ImageShack.us[/IMG]
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67