VLOOKUP Macro fichier fermé
F
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
A
Bonjour
Ici, nous n'avons ni le ou les fichiers concernés, ni le bout du Code que tu utilises.
Un peu difficile
Cordialement
F
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