Excel cellule active ds coin haut gauche

Résolu/Fermé
le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021 - 24 avril 2008 à 18:06
le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021 - 14 mai 2008 à 18:26
Salut à tous,

Je cherche à créer une série de macro (que je lierai ensuite à un bouton) qui m'amènerai à chaque fois à une cellule différente (en fonction du bouton).
Jusqu'ici, pas de pb, j'ai crée des macros (avec l'enregistreur, car je n'y connaît rien en visual basic), et celle ci sélectionne bien la cellule concernée.
Mais le top du top, ce serait qu'elle m'amène cette cellule en haut à gauche de l'écran...

Je me suis évidemment renseigné sur le net avant de venir vous enquiquiner... mais je ne trouve pas de réponses...
Disons que la seule que j'ai trouvé, sur le site de microsoft, est la suivante :

Symptômes
Existe-t-il une commande permettant de sélectionner une cellule quelconque d'une feuille de calcul et de la positionner dans le coin en haut à gauche de la fenêtre active ?

Résolution
Il suffit d'utiliser la fonction SELECTION.ATTEINDRE avec son deuxième argument égal à VRAI.
EXEMPLE :
=SELECTION.ATTEINDRE("L20C20";VRAI)
=RETOUR()
Cette macro commande sélectionne la cellule L20C20 et fait défiler la fenêtre active de manière à afficher la cellule L20C20 dans le coin supérieur gauche de la fenêtre active de la feuille de calcul.
Si ce deuxième argument est FAUX ou omis, Microsoft Excel procède au défilement normal.

Or, je n'arrive pas à comprendre comment la mettre en œuvre. Un copier/collé ds l'éditeur VB (et le remplacement par les cellules qui m'intéresse) n'a pas l'air de fonctionner (il a du mal avec le point.virgule avant le VRAI...).

Je suis un peu perdu...

Au secours !

Merci d'avance...


l.G.
A voir également:

1 réponse

LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
25 avril 2008 à 09:26
bonjour

en cherchant sur les forums j'avais trouvé ceci qui devrait te convenir :
Sub test()
    'pour placer la cellule S4 en haut à gauche Ligne 4, colonne 19
    Onglet = ActiveSheet.Name
    MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(4, 19)
End Sub

Sub MakeTopLeft(R As Range)
  R.Parent.Activate
  ActiveWindow.ScrollRow = R.Row
  ActiveWindow.ScrollColumn = R.Column
End Sub

à plus
2
le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021 1
27 avril 2008 à 21:59
Merci beaucoup....

Alors j'ai copié tout ça ds le volet (Feuil1).

Donc, la cellule concernée arrive bien en haut à gauche (et ça, c'est super !)...
mais ce n'est pas la "cellule active", cette dernière reste la cellule précédemment sélectionnée...

En outre, est-ce que vous pourriez un peu m'expliquer en quoi ça consiste
(enfin, si c'est pas trop compliqué et si ça vous ennuie pas trop).

J'aime bien essayer de comprendre un peu...

Merci d'avance,

l.G.
0
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021
28 avril 2008 à 11:09
bonjour

voici le code adapté pour placé la cellule active en haut à gauche :
Sub test()
    LigIni = Selection.Row
    Colini = Selection.Column
    Onglet = ActiveSheet.Name
    'pour placer la cellule S4 en haut à gauche Ligne 4, colonne 19
    'MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(4, 19)
    MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(LigIni, Colini)
End Sub

la propriété ScrollRow, renvoie ou définit le numéro de la ligne qui apparaît en haut du volet ou de la fenêtre.

tu peux aussi utiliser tout simplement ces deux lignes de code (plus simple que l'appelle à la procédure "MakeTopLeft") :
Sub test2()
    ActiveWindow.ScrollRow = Selection.Row
    ActiveWindow.ScrollColumn = Selection.Column
End Sub


tout dépend de ton usage.

à plus
0
le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021 1 > LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012
29 avril 2008 à 17:31
Merci bcp,

J'ai copié tes deux petites lignes de code à la suite de la Macro que j'avais enregistré préalablement...
et ça marche !
J'ai recopié ça ds toutes les macros concernées... c'est super ! Merci bcp !

Voilà ce que ça donne
(le but du jeu est d'aller chercher le titre d'une catégorie de Compétences, afin d'avoir celles ci directement sous les yeux) :

Sub Per()
Sheets("Compétences").Select
Range("A81").Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
End Sub

Donc, pour celle ci, il va me chercher la cellule du titre des compétences de Perception, et me la positionne en haut à gauche de l'écran.
J'ai donc ensuite toutes les compétences de Perception en dessous...

C'est parfait !

En revanche, ça avait l'air très bien, tout le MakeTopLeft, etc.
Etait-ce une manière de faire la même chose par d'autres voies ?

Merci encore !

l.G.
0
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021
29 avril 2008 à 18:02
bonjour

l'intérêt de faire appel à une procédure "MakeTopLeft" par exemple c'est que ton code principal s'en trouve allégé donc plus facile à mettre au point en cas de problèmes ou modifications ultérieures.
Mais le principal c'est que ça fonctionne correctement.
Bonne journée et à plus
0
le Glauque Messages postés 63 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 19 avril 2021 1 > LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012
1 mai 2008 à 18:46
Alors, si je te suis, il faut copier cette formule :

Sub MakeTopLeft(R As Range)
R.Parent.Activate
ActiveWindow.ScrollRow = R.Row
ActiveWindow.ScrollColumn = R.Column
End Sub

dans les Procédures di doc ?

et ensuite, celle ci :

Sub test()
LigIni = Selection.Row
Colini = Selection.Column
Onglet = ActiveSheet.Name
End Sub

dans les Fonctions ?

Et donc, après, ds les modules, si par ex, je veux qu'une Macro place la cellule A75 en haut à gauche, et que cette cellule devienne active

Sub test()
MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(75, 1i)
End Sub

Est-ce que je suis ds le bon ?

ThisWorkbook, ça désigne le document actuel ?
Sheets, ça, c'est la Feuille. Faut-il renseigner le nom de la feuille ?

Si cette feuille porte un nom (par ex "Compétences"), est-ce qu'il faut mettre :

Sub test()
MakeTopLeft ThisWorkbook.Sheets(Compétences).Cells(75, 1i)
End Sub

Désolé,
ces questions sont peut-être un peu basiques...

Merci d'avance...
0