Excel cellule active ds coin haut gauche
Résolu
le Glauque
Messages postés
66
Statut
Membre
-
le Glauque Messages postés 66 Statut Membre -
le Glauque Messages postés 66 Statut Membre -
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.
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:
- Cellule active excel formule
- Formule excel si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
- Proteger cellule excel - Guide
1 réponse
bonjour
en cherchant sur les forums j'avais trouvé ceci qui devrait te convenir :
à plus
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
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.
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 Subla 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 Subtout dépend de ton usage.
à plus
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.
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
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...