RechercheV sur classeur fermé

Bonjour,

malgré avoir consulté tous les forums, ma formulation ne fonctionne pas.

Lorsqu'une cellule de la colonne B est modifiée, une macro doit se déclencher pour aller chercher la valeur saisie en colonne 3 de

la feuille FUSION dans un autre classeur fermé.

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim KeyCells As Range
    Dim NoLig As String, NoCol As String, Valeur As Integer
    Dim NomFichier As String, NomChemin As String
    Dim ValeurZ1 As String

    Set KeyCells = Range("B2:B1500")

    NomChemin = "C:\Gestion_Commerciale\A_Magasins\"

    NomFichier = "REFERENCE DES MAGASINS.xlsx"

    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        MsgBox "La cellule " & Target.Address & " a été modifiée."
        Valeur = Target.Value
        NoLig = Target.Row
        NoCol = Target.Column
        'MsgBox "Valeur  " & Valeur
        'MsgBox "Ligne   " & NoLig
        'MsgBox "Colonne " & NoCol
        If Dir(NomChemin & "\" & NomFichier) <> "" Then
            Range(ValeurZ1).Formula = "=VLOOKUP(Cells(NoLig,NoCol)," & NomChemin & "[" & NomFichier & "]FUSION!$B$2:$AE$3000,3,false)"
        Else
            MsgBox "fichier inconnu"
        End If
    End If

End Sub

Avez-vous une idée de mes erreurs de code ?

NB : en saisissant la fonction RechercheV dans la cellule de réception, cela fonctionne, mais je veux passer par une macro pour

gérer le fait que RechercheV me renvoie N/A.

Cordialement et merci

Dadu35

Quand tu dis que ça ne fonctionne pas, tu veux dire que ça génère un code erreur?

Bonjour,

j'obtiens le libellé suivant

erreur 1004 la méthode "Range" de l'objet "_WorkSheet" a échoué

dans une fenêtre d'anomalie

Cdt

Dadu

dadu35 a écrit :

Range(ValeurZ1).Formula = "=VLOOKUP(Cells(NoLig,NoCol)," & NomChemin & "[" & NomFichier & "]FUSION!$B$2:$AE$3000,3,false)"[/code]

C'est bizarre, tu utilises

Cells(NoLig,NoCol)

qui est une fonction VBA alors la formule doit être appliquée sur une cellule, donc elle doit être au format Excel: il ne faut pas mélanger les deux.

Peut-être dans un premier temps, remplace

Cells(NoLig,NoCol)

par

INDIRECT(""R"" & NoLig & ""C"" NoCol, FALSE)

Bonjour,

avec

Range(ValeurZ1).Formula = "=VLOOKUP(INDIRECT(""R"" & NoLig & ""C"" NoCol, FALSE)," & NomChemin & "[" & NomFichier & "]FUSION!$B$2:$AE$3000,3,false)"

=> Même anomalie

Cdt

Dadu

dadu35 a écrit :

Bonjour,

avec

Range(ValeurZ1).Formula = "=VLOOKUP(INDIRECT(""R"" & NoLig & ""C"" NoCol, FALSE)," & NomChemin & "[" & NomFichier & "]FUSION!$B$2:$AE$3000,3,false)"

=> Même anomalie

Cdt

Dadu

Il manque des ' (simples guillemets):

Range(ValeurZ1).Formula = "=VLOOKUP(INDIRECT(""R"" & NoLig & ""C"" NoCol, FALSE),'" & NomChemin & "[" & NomFichier & "]FUSION'!$B$2:$AE$3000,3,false)"

même erreur malgré tout.

CDt

Dadu

Où est définie ValeurZ1?

au début de la macro, Dim . . .

Il faut lui donner une valeur...

Désolé, mais je ne comprend pas.

Pour moi, elle recevra le résultat de VLOOKUP()

Non ?

Cdt

Dadu

Non, le VLOOKUP va donner une valeur à la cellule ValeurZ1 mais il faut d'abord savoir ce qu'est la cellule ValeurZ1 (son adresse quoi).

Après avoir ajouté l'instruction

ValeurZ1 = "L33"

la macro se déroule bien, mais je n'ai rien en résultat et

Range(ValeurZ1).Formula = <la méthode 'Range' de l'objet '_Worksheet' a échoué

Pourquoi ????

Mystère

Cdt

Envoie-moi le fichier stp

La macro est dans le fichier ANNEXE 02 - RAPPORT JOURNALIER.xlsm

Si modif de la colonne B :

exécution de la macro avec accès au fichier des magasins : REFERENCE DES MAGASINS.xlsx

Je n'arrive pas à joindre le fichier accédé par la macro.

Cdt

Si le fichier dans lequel tu lis est fermé, c'est normal.

Il faut soit l'ouvrir et le fermer via la macro, soit se connecter dessus et récupérer les éléments qui nous intéressent.

Puis-je le laisser ouvert en permanence ?

Cdt

Oui, mais c'est pas le top.

Je viens d'essayer en ayant ouvert le fichier auparavant.

Toujours le même souci.

Dans la cellule destinatrice j'obtiens le libellé #NOM?

CDt

Remplace ton code par ceci


    Dim KeyCells As Range
    Dim NoLig As String, NoCol As String, Valeur As Integer
    Dim NomFichier As String, NomChemin As String
    Dim CelluleSource As String, CelluleCible As String

    Set KeyCells = Range("B2:B1500")

    NomChemin = "C:\Gestion_KerRonan\A_Magasins\"

    NomFichier = "REFERENCE DES MAGASINS.xlsx"

    If Not Application.Intersect(KeyCells, Target) Is Nothing Then

        Valeur = Target.Value
        NoLig = Target.Row
        NoCol = Target.Column
        CelluleSource = "B" & NoLig
        CelluleCible = "L" & NoLig

        If Dir(NomChemin & NomFichier) <> "" Then
             'Range(CelluleCible).Formula = "=VLOOKUP('CelluleSource','" & NomChemin & "[" & NomFichier & "]FUSION'!$B$2:$AE$3000,3,false)"
             Application.EnableEvents = False
             Range(CelluleCible).Formula = "=VLOOKUP(B" & NoLig & ",'" & NomChemin & "[" & NomFichier & "]FUSION'!$B$2:$AE$3000,3,false)"
             Application.EnableEvents = True
        Else
            MsgBox "fichier inconnu"
        End If
    End If
Rechercher des sujets similaires à "recherchev classeur ferme"