Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche d'un mot et renvoi du nom de l'onglet

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 !

Luc Lucasse

XLDnaute Occasionnel
Bonjour le forum, 😎

Vola mon problême:
J'écris un mot dans A6 de la feuille 1.
J'aimerai que mon programme cherche le mot dans tout le classeur et ensuite il me renvoit le nom de l'onglet en E6 et ca pour tous les mots qui se trouvent dans la colonne A de la feuille 1. 😱
Est ce qu'il est possible en cliquant sur le nom de l'onglet en E6, excel m'envoit directement sur la feuille de cette onglet??

Est ce que ce que tout ca est possible?? 😕

Merci pour votre aide 😉
 
Dernière édition:
Re : Recherche d'un mot et renvoi du nom de l'onglet

Donc c'est bon comme je l'ai écrit??

Mon module:

Option Explicit

Public MonTexte As String
Public MaLigne As Integer
Private Sub CommandButton1_Click()
Dim wshFeuille As Worksheet

' parcourir toutes les feuilles du classeur
For Each wshFeuille In Sheets
With wshFeuille
' si ce n'est pas Feuil1
If .Name <> "Feuil1" Then
' effacer contenu et formattage des plages spécifiées
Application.Union(.Range("C:R"), .Range("V:Z"), .Range("S4:U4")).Clear
End If
End With
Next
End Sub

Sub recherche()

Dim ws As Worksheet
Dim x As Integer
Dim c
Dim MonAdresse As String

With Sheets("Menu")
.Range("E" & MaLigne) = ""
For Each ws In Worksheets
If ws.Name <> "Menu" Then
MonAdresse = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Ad dress
Set c = ws.Range("A1:" & MonAdresse).Find(MonTexte)
If Not c Is Nothing Then
.Range("E" & MaLigne) = ws.Name
Exit For
End If
End If
Next ws
End With



End Sub


Merci
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

Le problême c'est que ca marche toujours pas vu que ca me met toujours la même erreur sur le dernier Private Sub Worksheet_Change(ByVal Target As Range) de la feuille1.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target.Value <> "" Then
MonTexte = Target.Value
MaLigne = Target.Row
recherche
End If
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E:E")) Is Nothing Then
If Target.Value <> "" Then Sheets(Target.Value).Select
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Workbooks("Pronos Daily Donkey1").Activate
Sheets("Feuil1").Select

Application.ScreenUpdating = False
Cells.Select
Selection.Replace What:=" ~*", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Results", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Lay of the Day", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("A1").Select
Application.ScreenUpdating = True

End Sub

Private Sub CommandButton1_Click()

Dim wshFeuille As Worksheet

' parcourir toutes les feuilles du classeur
For Each wshFeuille In Sheets
With wshFeuille
' si ce n'est pas Feuil1
If .Name <> "Feuil1" Then
' effacer contenu et formattage des plages spécifiées
Application.Union(.Range("C:R"), .Range("V:Z"), .Range("S4:U4")).Clear
End If
End With
Next

End Sub



L'erreur est situé sur la partie rouge.

Merci pour ton aide
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

re

il va falloir voir le fichier car là on va vers des trucs infernaux

je pense qu'il va falloir travailer différemment

réexplique STP ce qui se passe et ce que tu veux faire

tu reçois des trucs d'internet c'est ça et ensuite tu les modifies pour enlever les * puis tu veux mettre en colonne E le nom de la feuille où se trouve le truc que tu as récupérer et qui se trouve en colonne A

J'ai bien compris

Si oui on va changer notre fusil d'épaule
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

RE

alors modifies la macro recherche ainsi

Code:
Option Explicit

Public MonTest As Boolean

Sub recherche()

Dim ws As Worksheet
Dim x As Integer
Dim c
Dim MonAdresse As String

MonTest = True
With Sheets("Menu")
    For x = 1 To .Range("A65536").End(xlUp).Row
    .Range("E" & x) = ""
        For Each ws In Worksheets
            If ws.Name <> "Menu" Then
                MonAdresse = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address
                Set c = ws.Range("A1:" & MonAdresse).Find(.Range("A" & x))
                If Not c Is Nothing Then
                    .Range("E" & x) = ws.Name
                    Exit For
                End If
            End If
        Next ws
    Next x
End With
MonTest = False

End Sub

tu peux supprimer les autres variables public que j'avais mis

modifies celle-ci ainsi

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
if MonTest=True then exit sub
Workbooks("Pronos Daily Donkey1").Activate
Sheets("Feuil1").Select

Application.ScreenUpdating = False
Cells.Select
Selection.Replace What:=" ~*", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Results", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Lay of the Day", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("A1").Select

recherche

Application.ScreenUpdating = True

End Sub

tu supprimes celle ci

Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    If Target.Value <> "" Then
        MonTexte = Target.Value
        MaLigne = Target.Row
        recherche
    End If
End If

End Sub
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

Donc ca devient:

Option Explicit

Public MonTest As Boolean

Sub recherche()

Dim ws As Worksheet
Dim x As Integer
Dim c
Dim MonAdresse As String

MonTest = True
With Sheets("Menu")
For x = 1 To .Range("A65536").End(xlUp).Row
.Range("E" & x) = ""
For Each ws In Worksheets
If ws.Name <> "Menu" Then
MonAdresse = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address
Set c = ws.Range("A1:" & MonAdresse).Find(.Range("A" & x))
If Not c Is Nothing Then
.Range("E" & x) = ws.Name
Exit For
End If
End If
Next ws
Next x
End With
MonTest = False

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If MonTest = True Then Exit Sub
Workbooks("Pronos Daily Donkey1").Activate
Sheets("Feuil1").Select

Application.ScreenUpdating = False
Cells.Select
Selection.Replace What:=" ~*", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Results", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:="Lay of the Day", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("A1").Select

recherche

Application.ScreenUpdating = True

End Sub

Private Sub CommandButton1_Click()

Dim wshFeuille As Worksheet

' parcourir toutes les feuilles du classeur
For Each wshFeuille In Sheets
With wshFeuille
' si ce n'est pas Feuil1
If .Name <> "Feuil1" Then
' effacer contenu et formattage des plages spécifiées
Application.Union(.Range("C:R"), .Range("V:Z"), .Range("S4:U4")).Clear
End If
End With
Next

End Sub


Mais maintenant j'ai toujours la fameuse erreur 1004 qui apparait dans la partie en rouge
La méthode de la classe Range a échoué

Merci pour ton aide
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

RE

Fais attention dans ma macro recherche j'ai mis

With Sheets("Menu")

mais chez toi le nom doit être différent de Menu C'est le nom de la feuille où tu as en colonne A les mots et en colonne E les Nom de feuille
 
Re : Recherche d'un mot et renvoi du nom de l'onglet

Ca y est j'ai trouvé mon erreur!!!! (erreur de frappe) 😱

Par contre j'ai encore 1 problême:

- Quand le mot est importé, j'ai le nomd e la feuille qui s'écrit sur chaque case de la colonne E (de E5 à E42)

Merci
 
- 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
3
Affichages
221
Réponses
17
Affichages
877
Réponses
3
Affichages
881
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…