Recherche d’un onglet bien précis sur un fichier en possédant une multitude

Bonjour à tous,

J’ai un fichier Excel 2016, avec une multitude d’onglets numérotés, 1,2,3, etc.

Est-ce possible de retrouver très rapidement un onglet ?

Méthode si possible, j’inscris le N° d’onglet à rechercher dans une cellule (Ex. Y3)

Puis soit entrée, soit un bouton à cliquer, pour aller à cet onglet.

Bien sûr, s’il y a d’autres possibilités, je prends.

Le clic droit sur les flèches en bas à gauche est fastidieux.

Merci de vos réponses éventuelles.

Cordialement,

Bonjour,

Il vous suffit d'ajouter ce petit code dans votre fichier :

Sub ChgtOnglet()
onglet = Range("Y3").Value
Sheets(onglet).Activate

End Sub

Et vous pouvez créer un bouton pour lancer cette macro.

Cindy

Bonjour,

Voici un code VBA qui t'affiche automatiquement l'onglet en Nème position, où N est un nombre saisie en Y3 de la feuil1 :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$Y$3" Then
        If IsNumeric(Target.Value) And Target.Value > 0 And Target.Value <= Sheets.Count Then Sheets(Target.Value).Activate
    End If
End Sub

Le code est à placer dans le module de la Feuil1 de ton classeur (accessible via ALT+F11). Ton classeur doit être enregistré en ".xlsm"

Bonsoir et merci,

J’ai des soucis avec les deux méthodes

CyndyD : Cela semblerait convenir, mais elle ne trouve pas le bon onglet.

Une précision (est-ce important les onglets sont numérotés de façon « descendante » 900, 899, 898, etc.

Pedro22 : C’est un fichier hyper lourd, d’une association, il y a déjà beaucoup de macros

La feuille 1 est déjà occupée.

J’ai fait

ALT+F11

Insertion

Module

Copier la formule

Crée un bouton avec ta macro

Quand, je clique sur le bouton, j’ai un message :

Erreur de compilation

End Sub attendu

Une précision, je suis nul en informatique, surtout avec Excel (2016)

Encore merci

Cordialement,

Et comme ça?

Sub ChgtOnglet()
Dim onglet As String
onglet = Range("Y3").Value
Sheets(onglet).Activate

End Sub

Non

Désolé

Cela ne fonctionne pas

Cordialement,

Bonjour Bobbyfrance, CindyD,

Voilà une illustration pour mieux comprendre ce qu'il faut faire dans l'éditeur VBA (ouvert avec ALT + F11) :

illu3

1. Sélectionne le module de la feuille qui te servira à écrire la position de l'onglet sur lequel tu souhaite te rendre.

2. Colle le code ci-dessous au complet :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$Y$3" Then 'Adresse de cellule à adapter à ton besoin
        If IsNumeric(Target.Value) And Target.Value > 0 And Target.Value <= Sheets.Count Then Sheets(Target.Value).Activate
    End If
End Sub

Il n'y a rien à ajouter, la macro s’exécute automatiquement si tu entres un nombre valide dans la cellule. C'est un code simple qui ne devrait pas alourdir ton fichier.

Bonjour CyndyD, Pedro22 et tout le forum,

Je n’ai pas de message d’erreur, mais la recherche ne trouve pas les bonnes feuilles

Exemple :

85 va onglet 7

82 va onglet 10

5 va onglet 87

85 va onglet 7

85 va onglet 7

85 va onglet 7

97, 96, 95, 94, 93 va sur des feuilles non numérotées.

92 reste sur l’onglet de la recherche

Cordialement,

Bonjour CyndyD, Pedro22 et tout le forum,

Je n’ai pas de message d’erreur, mais la recherche ne trouve pas les bonnes feuilles

Exemple :

85 va onglet 7

82 va onglet 10

5 va onglet 87

85 va onglet 7

85 va onglet 7

85 va onglet 7

97, 96, 95, 94, 93 va sur des feuilles non numérotées.

92 reste sur l’onglet de la recherche

Cordialement,

Dans mon code, 85 t'emmène sur le 85ème onglet de ton classeur, pas sur l'onglet nommé "85". Je te propose une adaptation pour aller sur un onglet en fonction de son nom et pas de sa position.

Essaie en remplaçant le précédent code par celui-ci et redis moi si ça convient.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Byte
    If Target.Address = "$Y$3" Then 'Adresse de cellule à adapter à ton besoin
        For i = 1 To Sheets.Count
            If Sheets(i).Name = Target.Value Then
                Sheets(i).Activate
            ElseIf i = Sheets.Count Then MsgBox "Nom invalide !"
            End If
        Next i
    End If
End Sub

PS : quand un fichier approche les 100 onglets, c'est qu'il est temps de se poser des questions sur la pertinence de la structure du fichier...

Bonjour,

une autre proposition qui évite de boucler sur toutes les feuilles, et de mettre le code sur sur chaque feuille.

A mettre dans ThisWorkbook uniquement :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error GoTo fin
    If Target.Address = "$Y$3" And IsNumeric(Target) Then Sheets(Target & "").Activate
    On Error GoTo 0
fin:
End Sub

Est appelé de n'importe quelle feuille.

eric

Bonjour CyndyD, Pedro22 et tout le forum,

C’est un fichier hérité d’une association sans but lucratif, hyper lourd, avec de multiples données confidentielles.

Il y a plus de 600 onglets qui représentent la pièce d’identité de chaque adhérent.

Donc, impossible à refaire.

Toujours un souci.

Message d’erreur.

"Nom invalide."

Cela n’est pas grave on continuera à chercher avec les flèches en bas à gauche.

Cordialement,

Bonjour CyndyD, Pedro22 et tout le forum,

C’est un fichier hérité d’une association sans but lucratif, hyper lourd, avec de multiples données confidentielles.

Il y a plus de 600 onglets qui représentent la pièce d’identité de chaque adhérent.

Donc, impossible à refaire.

Toujours un souci.

Message d’erreur.

"Nom invalide."

Cela n’est pas grave on continuera à chercher avec les flèches en bas à gauche.

Cordialement,

Au contraire, s'il le fichier est mal conçu, ce n'est pas une fatalité et il est tout à fait possible de le penser autrement. Mais pour ça il faudrait que tu nous présentes un aperçu du contenu avec des données bidons (quand je dis aperçu, c'est pas d'une image mais bien un fichier Excel dont je parle).

Quand au code proposé, pour ce qui est du mien, j'ai anticipé la saisie d'un nom d'onglet inexistant, qui renvoie donc "nom invalide !". Je t'invite aussi à tester le code proposé par eriiic.

Re,

On en a effectivement pensé lors d’une réunion de bureau.

Mais il faudrait tout ressaisir les données : nom, prénom, adresse, téléphone, carte sécu, etc.

Sans compter de nombreux liens.

À oublier.

Je n’ai pas le code de Dhany.

Je me répète, sans solution on utilisera les flèches.

Merci tout de même, à tous.

Salut Éric ;

Désolé je ne sais ce que c’est ThisWorkbook.

Merci malgré tout, je vais essayer.

Cordialement,

illu3.jpg

ThisWorkbook : C'est le module juste en dessous de la flèche n°1 dans mon post ci dessus.

Re,

On en a effectivement pensé lors d’une réunion de bureau.

Mais il faudrait tout ressaisir les données : nom, prénom, adresse, téléphone, carte sécu, etc.

Sans compter de nombreux liens.

À oublier.

C'est pour ça que je t'invite à transmettre un fichier représentatif, car il est surement possible d'automatiser le remaniement de ton fichier...

C’est vraiment sympa, de te démener pour moi, mais j’ai beau être le président (pas ce que j’ai fait de mieux début 2018) de cette association, l’ensemble du bureau veut garder le fichier.

Chaque onglet représente la fiche d’un adhérent, et sur chaque fiche, en plus de multiples renseignements, il y a les mouvements de ses derniers.

Ce fichier peut faire des factures, des locations de livres, DVD et bien d’autres choses.

Donc quelques que soit, le nouveau fichier, il sera impératif de tous ressaisir, alors !!!

Merci encore de ton aide.

Cordialement,

C’est vraiment sympa, de te démener pour moi, mais j’ai beau être le président (pas ce que j’ai fait de mieux début 2018) de cette association, l’ensemble du bureau veut garder le fichier.

Chaque onglet représente la fiche d’un adhérent, et sur chaque fiche, en plus de multiples renseignements, il y a les mouvements de ses derniers.

Ce fichier peut faire des factures, des locations de livres, DVD et bien d’autres choses.

Donc quelques que soit, le nouveau fichier, il sera impératif de tous ressaisir, alors !!!

Merci encore de ton aide.

Cordialement,

C'est ton choix, mais c'est bien avec cette affirmation que je ne suis pas d'accord du tout !

"Donc quelques que soit, le nouveau fichier, il sera impératif de tous ressaisir, alors !!!"

ThisWorkbook est le dernier module de ton projet. Il suffit de lire à droite pour le trouver.

eric

Rechercher des sujets similaires à "recherche onglet bien precis fichier possedant multitude"