VLOOKUP Macro fichier fermé

Bonjour à tous,

J'ai actuellement un fichier avec une macro très utile qui va récupérer les données souhaitée dans différents autres fichier Excel. Malheureusement cette Macro ne fonctionne pas si les autres fichier ne sont pas ouvert. Y a t-il un moyen pour que même fichier fermé je puisse aller récupérer ces données ?

Merci d'avance pour votre aide.

FloBru

Bonjour

Ici, nous n'avons ni le ou les fichiers concernés, ni le bout du Code que tu utilises.

Un peu difficile

Cordialement

Re,

Voici la macro complète que j'utilise donc pour ce travail

Sub UpdateGeneral()

Application.Calculation = xlCalculationManual 'Accélération Macro

Dim Find As Object

'Définition des onglets de travail
Dim OIGeneral As Variant
Dim OITR As Variant
Dim OIISAIM As Variant
Set OIGeneral = Workbooks("G.xlsm").Worksheets("OI General")
Set OITR = Workbooks("TR.xlsm").Worksheets("OI TechRequest")
Set OIISAIM = Workbooks("IS.xlsm").Worksheets("OI ISAIM")

OIGeneral.Activate 'Activation par défaut de l'onglet OI General

derligne = OIGeneral.Range("A" & Rows.Count).End(xlUp).Row 'Définition de la dernière ligne de la colonne A

For i = 2 To derligne

    If Sheets("OI General").Range("B" & i).Value <> "" Then
        Set Find = OITR.Range("C:C").Find(OIGeneral.Range("B" & i).Value, LookAt:=xlWhole) 'Définition de la variable Find, de la colonne de recherche et de la valeur recherchée
        If Not Find Is Nothing Then 'Evite les bugs sur les valeurs inexistantes
            'ICAO
            OIGeneral.Range("E" & i).Value = OITR.Range("G" & Find.Row)

            OIGeneral.Range("H" & i).Value = OITR.Range("K" & Find.Row)

            OIGeneral.Range("I" & i).Value = OITR.Range("L" & Find.Row)

            OIGeneral.Range("J" & i).Value = OITR.Range("AQ" & Find.Row)

            OIGeneral.Range("K" & i).Value = OITR.Range("AR" & Find.Row)

            OIGeneral.Range("N" & i).Value = OITR.Range("M" & Find.Row)

            OIGeneral.Range("O" & i).Value = OITR.Range("N" & Find.Row)

            If OITR.Range("S" & Find.Row) <> "" Then
                OIGeneral.Range("R" & i).Value = OITR.Range("S" & Find.Row)
            Else
                OIGeneral.Range("R" & i).Value = OITR.Range("T" & Find.Row)
            End If

            OIGeneral.Range("S" & i).Value = OITR.Range("V" & Find.Row)
        End If
    End If

    'Inside OI ISAIM database
    If Sheets("OI General").Range("B" & i).Value = "" Then 'ISAIM
        'ICAO
        If IsError(Application.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:B"), 2, False)) Then
            MsgBox "The event n°" & i - 1 & "is not in 'IS' anymore."
        Else
            OIGeneral.Range("E" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:B"), 2, False)
        End If

        OIGeneral.Range("H" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:G"), 7, False)

        OIGeneral.Range("I" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:AE"), 31, False)

        OIGeneral.Range("J" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:AK"), 37, False)

        OIGeneral.Range("K" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:AL"), 38, False)

        If WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:J"), 10, False) = "Yes" Then
            OIGeneral.Range("N" & i).Value = "D"
        ElseIf WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:L"), 12, False) = "Yes" Then
            OIGeneral.Range("N" & i).Value = "C"
        ElseIf WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:N"), 14, False) = "Yes" Then
            OIGeneral.Range("N" & i).Value = "I"
        End If
        'Duration
        OIGeneral.Range("O" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:K"), 11, False)

        OIGeneral.Range("R" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:AQ"), 42, False)

        OIGeneral.Range("S" & i).Value = WorksheetFunction.VLookup(OIGeneral.Range("A" & i).Value, OIISAIM.Range("A:AR"), 44, False)
    End If

    'ATA 2D
    If Sheets("OI General").Range("A" & i).Value <> "" Then  'Evite les bugs sur les cases vides
        Sheets("OI General").Range("G" & i).Value = Right(Sheets("OI General").Range("A" & i).Value, 2)
    End If

    'Event month
    If Sheets("OI General").Range("H" & i).Value <> "" Then 'Evite les bugs sur les cases vides
        Sheets("OI General").Range("Q" & i).Value = WorksheetFunction.EoMonth(Sheets("OI General").Range("H" & i), 0)
    End If

    'S App
    If Sheets("OI General").Range("J" & i).Value <> "" Then 'Evite les bugs sur les cases vides
        Sheets("OI General").Range("L" & i).Value = WorksheetFunction.CountIf(Worksheets("OI General").Range("J3:J" & derligne), Sheets("OI General").Range("J" & i))
    End If

    'R-C App
    If Sheets("OI General").Range("K" & i).Value <> "" Then 'Evite les bugs sur les cases vides
        Sheets("OI General").Range("M" & i).Value = WorksheetFunction.CountIf(Worksheets("OI General").Range("K3:K" & derligne), Sheets("OI General").Range("K" & i))
    End If

Next
End Sub

Merci d'avance.

FloBru

Rechercher des sujets similaires à "vlookup macro fichier ferme"