OVH Cloud OVH Cloud

Mémoriser la cellule active puis y retourner.

5 réponses
Avatar
Nicolas
Bonsoir,

Je poste mon message car je n'arrive pas à trouver la bonne commande malgré
mes recherches et essais divers.

Je voudrais:

1) Mémoriser la position de la cellule en cours de sélection.
Puis exécuter la macro suivante:
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
(qui me permet de masquer certaines lignes).
2) Retourner à la cellule qui était sélectionnée avant la macro.

Je n'arrive pas à faire les points 1 et 2.

Merci de votre aide.

5 réponses

Avatar
garnote
Salut Nicolas,

Peut-être avec

Set ici¬tiveCell
...
...
ici.Select
...


Serge


"Nicolas" a écrit dans le message de news:
3ffb29d2$0$7148$
Bonsoir,

Je poste mon message car je n'arrive pas à trouver la bonne commande
malgré

mes recherches et essais divers.

Je voudrais:

1) Mémoriser la position de la cellule en cours de sélection.
Puis exécuter la macro suivante:
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
(qui me permet de masquer certaines lignes).
2) Retourner à la cellule qui était sélectionnée avant la macro.

Je n'arrive pas à faire les points 1 et 2.

Merci de votre aide.




Avatar
Nicolas
"garnote" a écrit dans le message de
news:BVFKb.27889$
Salut Nicolas,

Peut-être avec

Set ici¬tiveCell
...
...
ici.Select
...


Serge


"Nicolas" a écrit dans le message de news:
3ffb29d2$0$7148$
Bonsoir,

Je poste mon message car je n'arrive pas à trouver la bonne commande
malgré

mes recherches et essais divers.

Je voudrais:

1) Mémoriser la position de la cellule en cours de sélection.
Puis exécuter la macro suivante:
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
(qui me permet de masquer certaines lignes).
2) Retourner à la cellule qui était sélectionnée avant la macro.

Je n'arrive pas à faire les points 1 et 2.

Merci de votre aide.




C'est magique, merci, ça fonctionne impeccable.

Ca donne ça:
---------------------------------
Sub Masquer()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
ici.Select
End Sub

Sub Afficher()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = False
ici.Select
End Sub
-----------------------------------
Bonne nuit.


Avatar
Michel Gaboly
Bonjour,

C'est peut-être magique, mais pas très efficace ;-((

La bonne solution, consiste à éviter les Select (et autres
Activate), chaque fois que c'est possible, c'est-à-dire
dans l'immense majorité des cas :

Sub Masquer()
Range("12:12,16:16,21:21").EntireRow.Hidden = True
End Sub

Sub Afficher()
Range("12:12,16:16,21:21").EntireRow.Hidden = False
End Sub

Ceci dit, tu auras appris à te référer à une cellule, ce qui peut
servir dans d'autres circonstances ;-))



"garnote" a écrit dans le message de
news:BVFKb.27889$
Salut Nicolas,

Peut-être avec

Set ici¬tiveCell
...
...
ici.Select
...


Serge

C'est magique, merci, ça fonctionne impeccable.

Ca donne ça:
---------------------------------
Sub Masquer()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
ici.Select
End Sub

Sub Afficher()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = False
ici.Select
End Sub
-----------------------------------
Bonne nuit.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Nicolas
Merci pour ce complément.
Il me manque quand même une info car mon fichier comporte 2 onglets et quand
je lance ma macro de masquage, ou l'autre (j'ai ajouté une ligne qui
sélectionne la première puis la deuxième feuille), le retour par la commande
"ici.select" reste sur la deuxième feuille.

Il faudrait donc, soit que je mémorise quelle est la feuille de départ, soit
que j'applique le masquage directement par ta méthode
Range("12:12,16:16,21:21").EntireRow.Hidden = True en incluant le nom de la
feuille. Je sais pas si c'est possible, il faut que je regarde.

"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

C'est peut-être magique, mais pas très efficace ;-((

La bonne solution, consiste à éviter les Select (et autres
Activate), chaque fois que c'est possible, c'est-à-dire
dans l'immense majorité des cas :

Sub Masquer()
Range("12:12,16:16,21:21").EntireRow.Hidden = True
End Sub

Sub Afficher()
Range("12:12,16:16,21:21").EntireRow.Hidden = False
End Sub

Ceci dit, tu auras appris à te référer à une cellule, ce qui peut
servir dans d'autres circonstances ;-))



"garnote" a écrit dans le message de
news:BVFKb.27889$
Salut Nicolas,

Peut-être avec

Set ici¬tiveCell
...
...
ici.Select
...


Serge

C'est magique, merci, ça fonctionne impeccable.

Ca donne ça:
---------------------------------
Sub Masquer()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
ici.Select
End Sub

Sub Afficher()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = False
ici.Select
End Sub
-----------------------------------
Bonne nuit.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
Re,

Bien sûr que tu peux intégrer le nom de la feuille contenant les cellules
à masquer :

Sub Masquer()
Sheets("Toto").Range("12:12,16:16,21:21").EntireRow.Hidden = True
End Sub

Le principe est que si tu ne qualifies pas Range, l'instruction s'applique à
la feuille active.

Select et Activate sont à éviter le plus souvent, sauf, le cas échéant, pour
sélectionner la plage qui doit l'être à la fin du traitement. Tout appel inutile
de Select ou de Activate a pour seul effet de ralentir la vitesse d'exécution.



Merci pour ce complément.
Il me manque quand même une info car mon fichier comporte 2 onglets et quand
je lance ma macro de masquage, ou l'autre (j'ai ajouté une ligne qui
sélectionne la première puis la deuxième feuille), le retour par la commande
"ici.select" reste sur la deuxième feuille.

Il faudrait donc, soit que je mémorise quelle est la feuille de départ, soit
que j'applique le masquage directement par ta méthode
Range("12:12,16:16,21:21").EntireRow.Hidden = True en incluant le nom de la
feuille. Je sais pas si c'est possible, il faut que je regarde.

"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

C'est peut-être magique, mais pas très efficace ;-((

La bonne solution, consiste à éviter les Select (et autres
Activate), chaque fois que c'est possible, c'est-à-dire
dans l'immense majorité des cas :

Sub Masquer()
Range("12:12,16:16,21:21").EntireRow.Hidden = True
End Sub

Sub Afficher()
Range("12:12,16:16,21:21").EntireRow.Hidden = False
End Sub

Ceci dit, tu auras appris à te référer à une cellule, ce qui peut
servir dans d'autres circonstances ;-))



"garnote" a écrit dans le message de
news:BVFKb.27889$
Salut Nicolas,

Peut-être avec

Set ici¬tiveCell
...
...
ici.Select
...


Serge

C'est magique, merci, ça fonctionne impeccable.

Ca donne ça:
---------------------------------
Sub Masquer()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = True
ici.Select
End Sub

Sub Afficher()
Set ici = ActiveCell
Range("12:12,16:16,21:21").Select
Selection.EntireRow.Hidden = False
ici.Select
End Sub
-----------------------------------
Bonne nuit.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com