XL 2013 Insérer une variable dans RECHERCHEV

philoche63

XLDnaute Nouveau
Bonjour à tous
Voilà mon problème :
Je souhaiterai savoir s'il est possible d'insérer une variable dans un RECHERCHEV
=RECHERCHEV(A2;'[Nom_Fichier.xlsm]8'!$H$24:$AC$37;3;FAUX)
mais j'aimerai mettre le nom de l'onglet en variable (dans l'exemple au dessus l'onglet 8)
j'ai essayé avec INDEX mais cela ne marche pas
Pensez vous que cela soit possible ?

Un grand merci par avance pour votre aide.

Philoche
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Philoche,

d'après ce que je vois, c'est un classeur externe apparement. Je ne sais pas si c'est possible, même en donnant un nom à la plage de la feuille du classeur Nom_Fichier. À moin de passer par VBA, là c'est possible. Un Exemple

VB:
Sub Recherche()
Dim Ws As Worksheet, WbBase As Workbook, Fichier as String, _
derlig as Long, cel as Range

Fichier = ThisWorkbook.Path & "\Nom_Fichier.xlsm"
    Workbooks.Open (Fichier)
    Application.WindowState = xlMinimized
    Set WbBase = Workbooks("Nom_Fichier.xlsm")

Set Ws = WbBase.Sheets("Feuil8")
derlig = Feuil1.Range("b" & Rows.Count).end(xlUp).Row

With Ws.Range("h24:ac37")
Set cel = .Find(Ws.Range("a2"), , xlValues, xlWhole)
If Not cel is Nothing Then
Feuil1.Range("b" & derlig) = cel.Offset(0, 0)
End If
End With
End Sub
 
Dernière édition:

philoche63

XLDnaute Nouveau
Excuse moi j'avais pas vu le code.
Etant un éternel novice en VBA, je m'interroge sur cette ligne :
Set Ws = WbBase.Sheets("Feuil8")
Car justement je vois que tu mets en dur le nom de la feuille alors que voulais mettre une variable au niveau du nom de la feuille.
Sinon ou dois je mettre ce code et comment faire pour l'appeler ?
Merci beaucoup de ton aide

Philoche
 

Lone-wolf

XLDnaute Barbatruc
Re

Bein non, Ws est la variable justement; puisque je la déclare: Dim Ws as Worksheet. Tu met le code dans un module standard, si tu vois ce que c'est. Ensuite, dans le code de la feuille, donc clic-droit, visualiser le code, clique dessus. Ici tu copie ceci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("a2:f65536")) Is Nothing Then Call Recherche
Application.EnableEvents = True
End Sub

Sinon tu met un bouton, clique droit dessus > affecter une macro et tu sélectionne celle-ci. N'oublie pas de modifier les plages et le chemin du classeur concerné.
 
Dernière édition:

Discussions similaires

Réponses
20
Affichages
735
Réponses
17
Affichages
955
Réponses
3
Affichages
1 K

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL