Bouton recherche (dans toutes les onglets)

Bonjour à tous,

je reviens vers vous car vous m'aider beaucoup et bien

Contexte :

J'ai une colonne avec des n° de lot (genre : A025156B; U145896YG; Z1546631474/Z6...), et plusieurs onglets d'années (2021,2020,2019... jusqu'en 2008)

Mon but est d'avoir un bouton recherche qui trouve la ligne correspondant au n° de lot recherché dans tous les onglets. Et j'aimerai qu'il trouve le dernier en date (le n° de lot): exemple : j'ai un n° lot X dans l'onglet 2011 et on le retrouve aussi en 2019 donc j'aimerai que le bouton trouve celui de 2019.

De plus dans mon dossier, il y a déjà un bouton recherche existant mais malheureusement il n'arrive pas à rechercher certains n° lot (j'ai testé), et je ne sais pas pourquoi.

Voici le code du bouton que j'ai actuellement :

Sub Recherche()
'
' anglet Macro
'
'
Dim a As String

R = InputBox("NumLot", "Titre")

For i = 2008 To 2030
a = i
Sheets(a).Select
For j = 5 To 1000
If Range("X" & j) <> "" Then
If Range("X" & j) = R Then
Rows(j & ":" & j).Select
j = 1000
i = 2030

End If
End If

Next j
Next i
End Sub

Que dois-je modifier ou rajouter pour pouvoir avoir ce que je veux (en gras plus haut)?

En pièce joint un "échantillon" du dossier excel il y a que 4 onglets mais dans l'original il y de 2008 à 2021 et il évolue chaque année.

Merci beaucoup de votre aide

Hello,

Je vois déjà un problème, en 2008 ta colonne de recherche est la X et dans les autres ta colonne de recherche est la U ...

Comment qu'on fait ?

soit tu nous donnes toutes les colonnes de recherche par année

Soit tu formalises ta colonne de recherche (partout la même)

Soit tu nommes la colonne de recherche partout de la même façon

R@g

Bonsoir,

Un petit code :

Sub Macro_Recherche()

Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim IndexFeuille, Adr
Dim Str_critère As String

Str_Plage = "A1:Z800"
Str_critère = Selection.Value
IndexFeuille = 0
For Each Feuil In Sheets
    For Each Cel In Feuil.Range(Str_Plage)
        If InStr(Cel, Str_critère) Then
            If Feuil.Index > IndexFeuille Then IndexFeuille = Feuil.Index: Adr = Cel.Address
        End If
    Next Cel
Next Feuil
If IndexFeuille > 0 Then Sheets(IndexFeuille).Activate: ActiveSheet.Range(Adr).Select

End Sub

Il recherche la valeur se trouvant dans la cellule sélectionnée, puis recherche cette donnée dans tout le classeur sur une plage définie de A1:Z800,
à l'issue de la recherche, il sélectionne la feuille et la cellule avec l'année la plus faible qui contient cette valeur.

Il n'y a aucun test de validité de sélection de valeur, le choix de la feuille ayant l'année la plus "vielle" se fait par son index, il faut donc que les années soient décroissante de la gauche vers la droite comme dans votre fichier exemple.

@ bientôt

LouReeD

Oups ! à l'envers, il faut retourner l'onglet avec la référence la plus "jeune"...

Lignes à modifier :

IndexFeuille = 0
If Feuil.Index > IndexFeuille Then IndexFeuille = Feuil.Index: Adr = Cel.Address
If IndexFeuille > 0 Then Sheets(IndexFeuille).Activate: ActiveSheet.Range(Adr).Select

par :
IndexFeuille = 999
If Feuil.Index < IndexFeuille Then IndexFeuille = Feuil.Index: Adr = Cel.Address
If IndexFeuille <999 Then Sheets(IndexFeuille).Activate: ActiveSheet.Range(Adr).Select

@ bientôt

LouReeD

Bonjour Rag02700,

je peux formaliser mes onglets de façon que ce soit toujours la même colonne pour mes n° de lot. (cela serait du coup la colonne U)

Bonjour LouReed,

Alors j'ai réécris ton code avec les modifications de ton deuxième message, mais je suis très débutante dans ce domaine donc je ne comprends pas tout.

Ainsi quand tu écris : "Il recherche la valeur se trouvant dans la cellule sélectionnée", qui recherche? mon bouton recherche? car sur le coup j'ai essayé mais celui-ci ne marche plus du tout.

Quelle est la manœuvre a effectué pour réaliser ta recherche macro?

En vous remerciant tous les deux de m'aider

Re

Quand je clique sur le bouton recherche il me dit erreur d’exécution "13" : incompatibilité de type

et quand je regarde le code il me souligne cette ligne

image

Bonjour

Maintenant que le bouton lance la "bonne" macro, il suffit de sélectionner une cellule de n'importe quelle feuille sui contient une référence, puis clic sur le bouton.

Le code devrait alors sélectionner la cellule comportant cette référence sur l'onglet dont l'année est la plus grande avec les corrections du code effectuées.

Sur mon téléphone, donc pas facile de répondre...

@ bientôt

LouReeD

Ah ok alors c'est ce que j'ai fait malheureusement il m'indique ceci maintenant (toujours erreur 13):

image

Je suis désolé de vous embêter avec ceci

Et je vous remercie de m'aider même si vous répondez avec votre téléphone

Hello Cécilou,

je peux formaliser mes onglets de façon que ce soit toujours la même colonne pour mes n° de lot. (cela serait du coup la colonne U

C'est toujours mieux d'avoir un fichier formalisé.

Cependant, le code de loureed doit répondre à ta demande.

@loureed passer par une plage .... je n'y avais pas pensé du tout

Hello Rag02700,

j'ai réécris son code mais il bloque sur une erreur 13 et quand je clique sur débloquer il me souligne cette phrase: If InStr(Cel, Str_critère) then

et donc comme j'ai commencé le VBA que depuis moins d'une semaine je suis encore très débutante ainsi je ne sais pas ce qui bloque le code de LouReed

Re bonjour,

alors j'ai retesté et ça marche !! j'ai dû faire je ne sais quoi encore !

Le problème maintenant (et oui il y a toujours un problème avec moi hahah)

C'est que ce document on le remplit au fur et à mesure de l'année. Donc par exemple si j'écris un n°lot à la suite dans l'onglet 2021, je veux trouvé si on a déjà "récrit" ce n° de lot dans les autres onglets (le plus récent possible), ainsi je sélectionne du coup mon n° de lot que je viens d'écrire et quand je clique sur le bouton rechercher bah il me trouve celui que je viens d'écrit . Donc du coup il faudrait qu'il cherche le "deuxième" si je puis dire.

Je suis désolé d'avoir mal exprimer ma demande et je vous remercie de votre patience!

Re Re Bonjour,

J'ai trouvé une solution j'ai créé un nouvel onglet nommé "recherche" où j'ai mis le bouton recherche, et je l'ai mis à la fin de tous les onglets et ça marche comme ça!

Je vous remercie infini de votre aide

Bonne journée à vous

Rechercher des sujets similaires à "bouton recherche toutes onglets"