Rechercher une valeur cellule sur autre feuille et aller vers la cellule

Fermé
Dfault Messages postés 20 Date d'inscription mardi 6 mai 2014 Statut Membre Dernière intervention 17 avril 2020 - 16 avril 2020 à 13:01
Dfault Messages postés 20 Date d'inscription mardi 6 mai 2014 Statut Membre Dernière intervention 17 avril 2020 - 17 avril 2020 à 16:31
Bonjour,

Afin de retrouver d'aller vers la référence d'un contrat initial dans un tableau contenant toutes les références de contrat et se trouvant sur une autre feuille, j'aimerais utiliser une fonction VBA sous forme de bouton me permettant d'aller vers la cellule recherchée.
J'ai essayé le code suivant, mais cela ne fontionne pas. Auriez-vous une idée de ce qu'il faudrait modifier à la formule VBA suivante :

Sub Invoice_to_list()

rngY = Range("G1").Value

Set ws = Worksheets("INVOICES_TO_COMPANY")
ws.Columns("C").Select
Selection.find(What:=rngY, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

ActiveCell.Select
End Sub

La cellule G1 contient la référence du contrat, et la liste de tous les contrat se trouve sur la feuille 'INVOICES_TO_COMPANY' dans la 3eme collonne.

Merci d'avance,

3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
16 avril 2020 à 13:54
Bonjour Dfault, bonjour le forum,

Quand on travaille sur plusieurs onglets, mieux vaut les spécifier systématiquement pour éviter les erreurs. Essaie comme ça (OI à adapter à ton cas) :
Sub Invoice_to_list()
Dim OI As Worksheet 'déclare la variable OI (Onglet Initial)
Dim REF As Variant 'déclare la variable Ref (REFérence)
Dim OT As Worksheet 'déclare la variable OT (Onglet du Tableau)
Dim R As Range 'déclare la variable R (Recherche)

Set OI = Worksheets("ton_onglet_initial") 'à adapter à ton cas
REF = OI.Range("G1").Value 'définit la variable REF
Set OT = Worksheets("INVOICES_TO_COMPANY") 'définit l'onglet du tableau OT
Set R = OT.Columns(3).Find(REF, , xlValues, xlWhole) 'définit la recherche R
If Not R Is Nothing Then 'condition : s'il existe au moins une occurrence trouvée
    OT.Activate 'active l'onglet OT
    R.Select 'sélectionne la cellule de la première occurrence trouvée
End If 'fin de la condition
End Sub

1
Dfault Messages postés 20 Date d'inscription mardi 6 mai 2014 Statut Membre Dernière intervention 17 avril 2020
16 avril 2020 à 14:31
Bonjour ThauTheme,

Cette solution fonctionne à merveille, merci beaucoup !
0
Dfault Messages postés 20 Date d'inscription mardi 6 mai 2014 Statut Membre Dernière intervention 17 avril 2020
17 avril 2020 à 13:08
Re-bonjour,

Désolé encore une question.
Comment peut-on modifier la macro afin que le OI soit toujours la feuille active. Ceci permettant d'utiliser cette meme macro sur plusieurs feuilles differentes en la recopiant a chaque fois ?

Merci beaucoup
0
Dfault Messages postés 20 Date d'inscription mardi 6 mai 2014 Statut Membre Dernière intervention 17 avril 2020
17 avril 2020 à 16:31
En fait il suffisait de supprimer les lignes OI et d'utiliser le activesheet.name comme REF.
0