Rechercher : dans
Par :

Excel cellule active ds coin haut gauche

Dernière réponse le 14 mai 2008 à 18:26:31 le Glauque, le 24 avr 2008 à 18:06:00 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « Excel cellule active ds coin haut gauche » dans :
Tableur - La sélection des cellules VoirSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a...

1

LePierre, le 25 avr 2008 à 09:26:52

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

Répondre à LePierre

2

le Glauque, le 27 avr 2008 à 21:59:23

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.

Répondre à le Glauque

3

LePierre, le 28 avr 2008 à 11:09:10

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

Répondre à LePierre

4

le Glauque, le 29 avr 2008 à 17:31:44

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.

Répondre à le Glauque

5

LePierre, le 29 avr 2008 à 18:02:53

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

Répondre à LePierre

6

le Glauque, le 1 mai 2008 à 18:46:49

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...

Répondre à le Glauque

7

LePierre, le 1 mai 2008 à 20:33:20

Bonjour

si tu as un nombre d'appels assez important, il vaut mieux utiliser l'appel à la sous routine comme indiqué ci dessous :

Sub test() 
MakeTopLeft ThisWorkbook.Sheets("Compétences").Cells(75, 12) 
End Sub 

Si "Compétences" est le nom d'une feuille, il faut mettre les guillemets (ex: ...Sheets("Compétences")...)
Si "Compétences" est une variable contenant le nom de la feuille alors il ne faut pas les mettre (ex: ...Sheets(Compétences)...)

si tu n'as à faire qu'un ou deux appels tu places ces deux lignes dans ton code :
ActiveWindow.ScrollRow = Selection.Row
    ActiveWindow.ScrollColumn = Selection.Column


il faut placer dans un module tes procédures "Sub MakeTopLeft(R As Range)" et "Sub test()"
Pour créer un Module dans VBA :
dans la fenêtre Projet-VBA Project, click droit sur ton projet qui apparait --> Insertion --> Module

à plus

Répondre à LePierre

8

le Glauque, le 13 mai 2008 à 20:13:15

OK, merci bien.

Ceci dit, afin qu'il te sélectionne la cellule là haut, il faut ajouter à :

MakeTopLeft ThisWorkbook.Sheets("Possessions").Cells(1, 7)


cette ligne-ci :

Range("G1").Select


non ?

Répondre à le Glauque

9

LePierre, le 14 mai 2008 à 14:29:41

Bonjour

avec la procédure :

MakeTopLeft ThisWorkbook.Sheets("Possessions").Cells(1, 7)
la référence de la cellule en haut à gauche est faite avec ".Cells(1,7)"


par contre avec l'autre procédure il faut sélectionner la cellule à placer en haut à gauche sous la forme :
Range("G1").Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column

à plus

Répondre à LePierre

10

 le Glauque, le 14 mai 2008 à 18:26:31

Héhéhé,

OK,

Encore merci pour ton aide !


l.G.

Répondre à le Glauque
Collection CommentÇaMarche.net