Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Utilisation de IF...Then + Hlookup

Faroyo

XLDnaute Junior
Bonjour,

je vous sollicite afin de trouver une solution à mon pb.
Voilà ce que j’aimerai obtenir.
En colonne « C » j’ai mis en place un menu déroulant afin de choisir soit « LM_1 » soit « LM_2 »

En fonction du choix fait en « C », je voudrais pouvoir lancer des Hlookup

La 1ère partie, « Si LM_1 » fonctionne par contre je n’arrive pas à metre en place la 2 iem « Si LM_2 »
VB:
Private Sub Actu()
Dim W As Long
derlig = Range("A" & Rows.Count).End(xlUp).Row
For W = 3 To derlig Step 3
If Range("C").Value Like "LM_1" Then
'Route Act1
    .Range("D" & W - 1).Value = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W).Value, Sheets("Form_L1").Range("A1:EZ57"), 28, 0), "")
'Route Act2
    .Range("D" & W).Value = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W).Value, Sheets("Form_L1").Range("A1:EZ57"), 34, 0), "")
'Route Act3
    .Range("D" & W + 1).Value = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W).Value, Sheets("Form_L1").Range("A1:EZ57"), 40, 0), "")
End If
Next W
End With
End Sub
Pour le 2iem choix il me faudrait quelque chose du genre
Code:
If Range("C").Value = "LM_2" Then

  .Range("D" & W - 1).Value = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W).Value, Sheets("Form_L2").Range("A1:EZ57"), 28, 0), "?")
  .Range("D" & W).Value = "0"
  .Range("D" & W + 1).Value = "0"



Merci pour votre aide
 
Solution
Testez ce code :
Code:
Private Sub Actu()
Dim derlig As Long, W As Long, F As Worksheet
With Sheets("Seq_CipA")
    derlig = .Range("A" & .Rows.Count).End(xlUp).Row
    For W = 3 To derlig Step 3
        Set F = Sheets(IIf(.Range("C" & W - 1) = "LM_1", "Form_L1", "Form_L2"))
        .Range("D" & W - 1) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 28, 0), "")
        .Range("D" & W) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 34, 0), "")
        .Range("D" & W + 1) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 40, 0), "")
    Next W
End With
End Sub

job75

XLDnaute Barbatruc
Testez ce code :
Code:
Private Sub Actu()
Dim derlig As Long, W As Long, F As Worksheet
With Sheets("Seq_CipA")
    derlig = .Range("A" & .Rows.Count).End(xlUp).Row
    For W = 3 To derlig Step 3
        Set F = Sheets(IIf(.Range("C" & W - 1) = "LM_1", "Form_L1", "Form_L2"))
        .Range("D" & W - 1) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 28, 0), "")
        .Range("D" & W) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 34, 0), "")
        .Range("D" & W + 1) = Application.WorksheetFunction.IfError(Application.HLookup(.Range("A" & W), F.Range("A1:EZ57"), 40, 0), "")
    Next W
End With
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…