Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

  • Initiateur de la discussion Initiateur de la discussion Chri8Ed
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chri8Ed

XLDnaute Occasionnel
Bonjour

J’ai un très grand tableau

Dans ce tableau il y a plusieurs zones ou thèmes.
Chaque zone ne comprend que quelques lignes et en règle générale s’affiche sur une ou deux pages à l’écran.
(Ce que j’entends par page, c’est ce que l’on voit à l’écran sans ou en utilisant une seule fois la touche PageDown).

Pour aller dans ces zones, j’ai nommé la 1ère ligne de ces zones sur 2 ou 3 lettres.
J’utilise la macro suivante pour me rendre dans une zone de manière à ce que la 1ère ligne de cette zone soit également la 1ère ligne qui s’affiche à l’écran.

Il y a de nombreuses zones et en règle générale, comme j’utilise souvent mon tableau, cela me pose peu de problèmes de mémorisation du nom que j’ai donné à chaque zone.

Par contre, souvent, je suis à la recherche d’un « article » dont je ne me rappelle plus dans quelle zone il se trouve.
J’utilise donc alors la fonction recherche de Excel.

Ce que je souhaiterais pouvoir faire, c’est que quand j’utilise cette fonction recherche, c’est que le pointeur aille bien entendu sur la cellule recherchée, mais de manière à ce que, comme quand j’utilise la macro précédente, la zone dans laquelle elle se trouve, apparaisse à l’écran de manière à ce que la 1ère ligne de la zone, soit également la 1ère ligne à l’écran.

Est-ce réalisable avec une macro ?
Peut-être que quelqu’un c’est déjà penché la dessus ?

Merci d’avance pour une éventuelle aide
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Bonjour,

J’utilise la macro suivante pour me rendre dans une zone de manière à ce que la 1ère ligne de cette zone soit également la 1ère ligne qui s’affiche à l’écran.

euh... perso vois pas ta macro... sans doute peut on l'améliorer en utilisant une "inputbox" et la méthode "Find"... mets peut être en pièce jointe, un tout petit extrait de ton fichier représentant uniquement le problème posé, plus facile pour t'aider...

bonne journée
@+
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Bonjour PIERROT93

En effet j'ai oublié de mettre la macro

La voici :

Code:
Sub Vers_Rubrique_mX()
'
' Touche de raccourci du clavier: Ctrl+Maj+x
'
x = InputBox("Quelle zone voulez vous atteindre ? ", "ALLER A", "")
Set zone = Range(x)
ActiveWindow.ScrollRow = zone.Row
'ActiveWindow.ScrollColumn = zone.Column
End Sub


Je vais essayer de réaliser un tableau exemple sommaire et je reviens sur le Forum

A+
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Re,

avec ce que j'ai compris, une approche comme ceci :
Code:
Option Explicit
Sub test()
Dim s As String, x As Range, n As Name
s = InputBox("Valeur recherchée...")
If s = "" Then Exit Sub
Set x = Cells.Find(s, , xlValues, xlPart, , , False)
If Not x Is Nothing Then
    For Each n In Names
        If Not Intersect(x, n.RefersToRange) Is Nothing Then _
            Application.Goto n.RefersToRange, True: Exit For
    Next n
End If
End Sub

Edition : avais oublié un test....
 
Dernière édition:
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Re,

en prenant en compte ta macro..
Code:
Option Explicit
Sub test()
Dim s As String, x As Range, n As Name
s = InputBox("Valeur ou plage nommée recherchée...")
If s = "" Then Exit Sub
On Error Resume Next
Set n = Names(s)
On Error GoTo 0
If Not n Is Nothing Then Application.Goto n.RefersToRange, True: Exit Sub
Set x = Cells.Find(s, , xlValues, xlPart, , , False)
If Not x Is Nothing Then
    For Each n In Names
        If Not Intersect(x, n.RefersToRange) Is Nothing Then _
            Application.Goto n.RefersToRange, True: Exit For
    Next n
End If
End Sub
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Re,

fonctionne chez moi et pas d'erreur... seulement tes plages nommés représentent uniquement les cellules "Thème"... donc si tu recherches "article", ne renverra rien... si tu recherches "TE", renvoie bien la plage en question...
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Bonjour, Chri8Ed 🙂, Pierrot 🙂, le Forum,

Le fichier joint ne correspond pas totalement à la demande mais... s'il peut être utile à quelqu'un 🙂

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = 0
Cells.EntireRow.Hidden = False
Columns("A:A").Interior.ColorIndex = xlNone
    If Not Application.Intersect(Target, Range("g1")) Is Nothing Then
        For Each c In Range("a1:a100")
            If c.Value = Target.Value Then
                With c
                .Interior.ColorIndex = 38
                .Offset(-1, 0).Name = "oui"
                End With
            End If
        Next
    End If
Range("a2:oui").Name = "non"
Range("non").EntireRow.Hidden = True
Application.ScreenUpdating = -1
End Sub

A bientôt.
 

Pièces jointes

Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Re,

Je n’ai peut-être pas bien expliqué ce que j’attendais
Je détail un peu plus
Effectivement seules les cellules de thèmes sont nommées
(Je ne peux pas nommer tous les articles, ils seraient bien trop nombreux)
De plus il me faudrait alors me rappeler à lettre près le nom de l’article et le tapez dans son intégralité.

Prenons un exemple avec mon tableau exemple
1) je veux me rendre sur le thème « Thème D »
J’utilise ma macro Ctrl Maj X

2) je veux me rendre sur l’article « Jeu 10 »
Cet article n’est pas nommé
J’utilise donc la fonction recherche de Excel
La recherche pointe donc la cellule 38B
Mais je voudrais que la 1ère ligne qui soit visible
Soit la ligne 28 !
 
Re : Positionner à l'écran la 1ère ligne d'une zone avec la fonction recherche

Bonjour,

Sans passer par les noms, peut-être ainsi ?
Code:
Sub test()
  Dim s As String, x As Range, L As Long
  s = InputBox("Valeur ou plage nommée recherchée...")
  If s = "" Then Exit Sub
  Set x = Columns(2).Find(s, , xlValues, xlPart, , , False)
  If Not x Is Nothing Then
    For L = x.Row To 2 Step -1
      If Cells(L, 1) <> "" Then Application.Goto Cells(L, 2), 1: Exit Sub
    Next
  End If
End Sub
Puisque tu minterpelles, je te salue aussi 😀-😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
291
Retour