Macro signet Excel
RésoluDans Word, j'ai une macro (plutôt deux) dont je me sers constamment et qui me permet de revenir à un endroit précis dans un document de plusieurs pages :
Sub Marquer()
'Marquer Macro
'Insère un signet "ici" qui permet bien d'y revenir au moyen du bouton "Revenir"
ActiveDocument.Bookmarks.Add Name:="ici"
End Sub
Sub Revenir()
'Revenir à la marque de départ
'
If ActiveDocument.Bookmarks.Exists("ici") = True Then Selection.GoTo What:=wdGoToBookmark, Name:="ici"
End Sub
J'aimerais obtenir la même chose dans Excel à savoir, dans une feuille contenant des milliers de lignes, pouvoir insérer un "marqueur" et revenir à cette position après avoir parcouru la feuille.
Merci d'avance de l'aide que vous pourrez m'apporter.
Configuration: Windows 7 Firefox 3.5.5
34 réponses
Des solutions existent pour reproduire dans Excel le mécanisme de marqueur et de retour, afin de marquer une position dans une feuille et y revenir après avoir parcouru des milliers de lignes. Plusieurs propositions évoquent l'usage d'un classeur personnel (Perso.xls) ou d'un marqueur dédié, de macros associées à des boutons, et l'enregistrement de l'emplacement par une variable ou nom de cellule, comme dans Word. Parmi les solutions, celle qui permet de gérer plusieurs marqueurs est privilégiée; discussions portent sur l'intégration dans le ruban, sur userforms non modales et sur limites liées au nommage des classeurs. En cas d'utilisation multi-classeur, les tests évoquent des défis lorsque le classeur est renommé ou fermé, ce qui peut nécessiter des ajustements et sauvegardes spécifiques.
-
Contributeurbonjour bececoste,
Merci du message et heureux que ce petit code corresponde à ton attente. -
Bonjour gbinforme
Je te remercie pour ces quelques mots qui me "réconfortent". Je suis une sexagénaire (jeune, mais tout de même !!!!!) et n'ai pas l'intention de me lancer dans la programmation mais cela fait presqu 'une quinzaine d'années que je pratique Windows (depuis la version 95) et il commence à ne pas avoir trop de secrets pour moi !!! J'ai souvent des déboires car j'associe tellement de logiciels (car j'aime tester et utiliser la moindre petite astuce qui peut en faciliter leur utilisation) que j'ai souvent droit à des dysfonctionnements mais 9 fois sur 10 je trouve la solution (même si cela me demande plusieurs heures voire plusieurs jours) car je suis têtue et veux comprendre le "pourquoi du comment" et quand vraiment je ne trouve pas, je restaure une image-disque.
Donc, la programmation n'est qu'un petit détail dans cette immensité mais quand, dans une revue ou un forum, je peux tomber sur une petite astuce de ce genre, je suis "toute ouïe" et suis la première à tester... et à garder le cas échéant.
En tous cas...... ! GENIAL, GENIAL, GENIAL !!! car le code de la macro que tu viens de me donner correspond exactement à ce que je possède dans Word et donc 100 % à ce que je voulais dans Excel. Je l'ai donc copié dans mon classeur Perso.xlsm et ai créé mes deux boutons (deux de plus !!) auxquels j'ai associé la macro.
Quant à la méthode d'eriiic, je l'ai sauvegardé dans mon dossier Astuces informatique car elle pourra peut-être me servir un jour.
Je ne vous remercierai donc jamais assez tous les deux et vous souhaite une très bonne journée. -
Contributeurbonjour bececoste,
Ce que tu me dis n'est pas très sympa
Désolé que tu le prennes comme cela, mais je suis dans le berceau de la 2 CV avec une salle de spectacle qui s'appelle la deudeuche et pour moi c'est une voiture fantastique qui faisait exactement ce pour quoi elle était conçue et n'est-ce pas ce que tu recherches en fait ?
Tu sais faire des boutons dans le ruban et donc dans ton fichier PERSO tu mets ce petit code dans un module, tu associes un bouton à "aller" et un autre à "retour" et tu as ta "2 pattes" c'est à dire exactement ta demande initiale.Public marque As Range ' adresse marquage Public Sub aller() If Not marque Is Nothing Then Worksheets(marque.Worksheet.Name).Activate marque.Select ' position sur marque End If End Sub Public Sub retour() Set marque = ActiveCell 'enregistrement marque End Sub
je suis passionnée d'informatique mais absolument nulle en programmation
Rassures-toi nous sommes tous passés par là : as-tu déjà vu un bébé qui savais marcher ?
Cela n'existe pas car il faut des mois pour qu'il apprenne et ensuite il ne se pose plus la question.
Lorsque l'on commence la programmation il y a tout à apprendre et c'est très difficile de poser un pied devant l'autre mais peu à peu cela vient et ensuite c'est difficile de comprendre ce qui bloquait comme pour le bébé.
Toutefois, je suis très intéressée
Cela suffit amplement car avec ton intérêt pour cela, tu seras obligée d'apprendre à marcher : tu vas voir la syntaxe comme une nouvelle langue, intégrer les algorithmes, comprendre les objets utilisables, etc
Tout cela va se mettre en place tout tranquillement, tu verras, au fur et à mesure de tes besoins et idées.
Bon courage et à bientôt.
Ps : n'hésites pas si tu as un souci avec ces quelques lignes de code. -
Bonsoir
gbinforme
Ce que tu me dis n'est pas très sympa car je suis passionnée d'informatique mais absolument nulle en programmation. Toutefois, je suis très intéressée et essaye de comprendre dans la mesure de mes faibles moyens. En outre, j'ai tout à fait conscience que ce que propose eriiic est extra mais je n'avais absolument pas besoin d'une ferrari mais, comme tu le dis, d'une simple deudeuche... Ce qui ne m'empêche pas de garder bien précieusement ce classeur au cas où j'en aurai besoin un jour.
eriiic
Cela devient trop compliqué pour moi. J'ai essayé de modifier le code et le userform de ton classeur (au lieu de partir du classeur que j'avais réussi à créer avec une de tes premières formules) mais c'est la cata, le userform disparait et je ne peux continuer à le modifier, sans compter tous les messages d'erreur demandant le débogage.
J'avais espoir que ce soit aussi simple que pour toutes les autres macros dont je copie userform et module dans le fichiers Perso.xls mais je me rends compte qu'il n'en est pas ainsi. Je vais donc me contenter d'un des premiers exemples de classeur que tu m'as proposés, et que j'ai pu modifier car à ce moment-là, ce n'était pas encore très compliqué et restait dans la limite de mes faibles connaissances.
Ensuite, je copierai userform et module dans les classeurs pour lesquels j'aurai besoin de cette macro.
Néanmoins, je tiens à te remercier pour ta gentillesse et pour le mal que tu t'es donné. Mais, je n'en doute pas et, comme le dit gbinforme, d'autres personnes "sauront apprécier un tel cadeau".
Encore merci et peut-être un jour seras-tu là pour résoudre un "problème" ou me donner un "tuyau".
Bonne nuit à tous les deux. -
Contributeurbonjour Éric,
Elle est bien belle ta réalisation, c'est le top, une vraie Ferrari (il y a du rouge) mais tout le monde n'a pas les moyens de se payer un tel bijou gratuit : certains sont nostalgiques de la deudeuche...
Je ne doute pas que d'autres vont apprécier un tel cadeau si leur chemin passe par là et je le met de côté en bonne place.
Bravo Éric et à plus. -
ContributeurC'est bien ce que j'avais cru comprendre...
Qui peut le plus, peut le moins. Si tu n'a besoin que d'un marqueur, n'utilises pas les autres.
Et si tu y tiens tu peux éditer la boite de dialogue pour modifier les tailles, supprimer des boutons etc
eric -
Je veux simplement les deux boutons "marquer" et "revenir" + "masquer" au lieu d'"annuler" de l'ancienne formule. C'est cette boîte là (je crois que c'est ainsi qu'on l'appelle) :
http://img9.imageshack.us/img9/5521/20091209172025.png
que je voudrais. -
ContributeurJe ne vois pas quoi adapter à ton classeur perso qui s'avère ne contenir que l'ancienne version de marqueur.xls...
-
Bonjour eriiic
J'ai fait le test et effectivement, après avoir copié formulaire et module dans le classeur Perso.xls, on dispose de cette fonctionnalité avec tout nouveau classeur.
Te serait-il possible d'adapter ceci à mon classeur personnel :
http://www.cijoint.fr/cjlink.php?file=cj200912/cijD92alkq.xls
qui est beaucoup plus simple mais qui me suffit pour le moment. Cela est trop compliqué pour moi... je ne vois vraiment pas comment faire. Par contre, ensuite, il me suffira simplement de créer une macro pour appeler le Ctrl+M car je préfère un bouton dans la barre d'accès rapide à un raccourci clavier mais cela, je sais le faire.
Merci encore de tout le mal que je te donne. -
ContributeurBonjour,
La version non modale : Marqueurs2.xls
On peut la garder ouverte tout le temps
Attention : si fermée par la croix les marqueurs sont vidés, pour les conserver utiliser le bouton 'Cacher'
eric -
ContributeurRe,
gb :
Si tu mémorises le classeur actif, il te suffit de vérifier lors de l'utilisation et comme tu as utilisé des fonctions "objet", no problème
Lors de l'utilisation c'est trop tard. Si un classeur est activé il faut que les boutons se mettent à jour (police verte pour les boutons actifs et étiquettes).
Autre idée complémentaire liée à ta proposition de macro complémentaire, sauvegarder les signets à la fermeture et les restaurer à la prochaine session ?
why not, j'y avais déjà songé en fait... sauvegarder le contexte mais ça demande à tout gérer : quels marquages supprimer pour apurer de temps en temps et que ça ne s'accumule pas trop ???
hummm, on verra plus tard ;-)
bececoste :
c'est normal, on ne peut plus gérer par évènement (ou alors il faudrait ajouter un bout de code à chaque classeur créé), l'appel se fait par Ctrl+m (et/ou lier la macro marqueur2() à ton bouton de la barre d'outils).
Lorsque le fonctionnement modal sera au point la fenetre pourra toujours être affichée
eric -
J'ai enregistré mon classeur en xlam (Excel 2010) ; j'ai ouvert un nouveau classeur puis j'ai bien coché la macro complémentaire comme tu le vois sur ma capture d'écran :
http://img697.imageshack.us/img697/9520/20091208095619.png
Mais lorsque je double-clique sur une cellule, je suis simplement en mode saisie. Donc, rien ne fonctionne...
Bon courage pour cette journée -
Contributeurbonjour
trouver une idée pour rafraichir les boutons sur activation d'un classeur
Si tu mémorises le classeur actif, il te suffit de vérifier lors de l'utilisation et comme tu as utilisé des fonctions "objet", no problème !
Autre idée complémentaire liée à ta proposition de macro complémentaire, sauvegarder les signets à la fermeture et les restaurer à la prochaine session ?
Bon courage -
ContributeurVite fait parce que je pars, pourquoi n'essaies-tu pas de l'enregistrer en xla plutôt que de l'intégrer à ton fichier ?
Eventuellement l'activer dans 'outils / macros complémentaires...'
(garde une version en .xls qcq part)
eric -
Bonjour à tous
et merci eriiic pour le mal que je te donne.
Par contre, je n'y connais rien en programmation et là je ne peux plus faire une adaptation à ce que je désire exactement ! Ton dernier classeur marche parfaitement car, en copiant les module et formulaire dans le fichier Perso, la macro est applicable dans tout nouveau classeur.
Par contre, je voudrais que cela soit applicable à mon classeur dont je te joins un exemplaire :
http://www.cijoint.fr/cjlink.php?file=cj200912/cijD92alkq.xls
Je suis complètement autodidacte et jusque là, j'ai réussi à adapter mais là, cela devient trop compliqué... et je suis "larguée"... !
Merci encore de ta gentillesse et très bonne journée. -
ContributeurSalut gb,
Oui, excellente idée
Heuuu, je viens de tester, maintenant faut trouver une idée pour rafraichir les boutons sur activation d'un classeur sans mettre de macro dans chaque classeur :-s
Merci et bonne journée
eric
Edit: pour l'instant je pense à un timer qui scrute toutes les secondes mais il y a peut-être mieux -
Contributeurbonjour Éric,
Belle réalisation, c'est bien adapté pour se balader sur un classeur avec positionnement évolutif.
Si je puis me permettre, tu devrais essayer de laisser le formulaire affiché en non modal pour avoir des fonctionnalités supplémentaires et en particulier un accès au clic direct.
Bonne nuit. -
ContributeurMarqueurs2.xls
Bon, va falloir passer au débogage, j'arrete les tests pour ce soir... fatigué ;-)
Non géré :
- classeur renommé : les marques restent sur l'ancien nom donc enregistrer sous le bon nom dès le début.
- classeur fermé : les marques restent mémorisées et sont actives si un autre classeur même nom est ouvert (tant que Marqueurs2.xls reste ouvert, ou ton classeur perso).
Impossible (enfin je ne sais pas..) de gérer ces évènements.
Je te laisse tester tel que d'abord, dans ton classeur perso ensuite et annoncer ce qui cloche
eric -
Merci de te pencher encore sur mon cas.
Je ne veux aucun lien d'un classeur à un autre. Je veux simplement pouvoir disposer de cette manip sur n'importe quel classeur comme je le fais avec toutes mes macros personnelles qui se trouvent dans le Perso.xls et dont je dispose dès que j'ouvre un nouveau classeur (et ce grâce à ma barre de d'outils accès rapide sur laquelle j'ai créé un bouton pour chaque macro).
J'espère avoir été suffisamment claire ; dans le cas contraire, n'hésite pas à me demander.
Bon courage -
ContributeurBonjour,
Où est la faille !?
Ben y'en n'a pas... L'appel est basé sur les évènements classeurs donc seuls les classeurs ayant la macro fonctionnent.
Il va falloir changer le mode d'appel et éventuellement prévoir une gestion multi-classeur.
J'ai ma petite idée mais je verrai ça se soir pour la faisabilité.
Et comment imagines-tu le truc ? D'un classeur on pouvoir appeler un lien vers un autre classeur ou on ne doit voir que ceux internes au classeur (sûrement plus simple) ?
- 1
- 2