VLOOKUP avec nombre de colonnes qui change

remy444

XLDnaute Nouveau
Bonjour tout le monde,

Je voudrais savoir comment "generaliser" ce VLOOKUP dans le code ci-dessous:

Code:
Sub copydata()

    Dim lngCounter As Long
    Dim lngMax As Long
    Dim lngCol As Long
    Dim wksTwo As Worksheet
     'copier de la sheet1 a la sheet2, on copie en valeurs
    Set wksTwo = Worksheets("Sheet2")
     
    wksTwo.Cells.ClearContents
    Worksheets("Sheet3").Cells.ClearContents
    Worksheets("Sheet1").Range("zoneselect").Copy
    wksTwo.Range("B1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, skipBlanks:=False, Transpose:=False
     
     ' On enleve les blancs entre la sheet 2 à la sheet3
    wksTwo.Range("A1:BB1").Copy Sheets("Sheet3").Range("B1")
    Sheets("Sheet3").Range("B1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
    
    Worksheets("Sheet3").Select
    Range("A1:BB1").Select
    Selection.Cut
    Sheets("Sheet3").Select
    Range("B1").Select
    ActiveSheet.Paste
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Application.CutCopyMode = False
    Selection.Delete shift:=xlToLeft
   
     'On selectionne l'action qui a le plus de dates pour la copier dans la sheet3
    With wksTwo
        For lngCounter = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column
            If InStr(1, .Cells(1, lngCounter).Value, "FP") > 0 Then
                If .Cells(.Rows.Count, lngCounter).End(xlUp).Row > lngMax Then
                    lngMax = .Cells(.Rows.Count, lngCounter).End(xlUp).Row
                    lngCol = lngCounter
                End If
            End If
        Next lngCounter
         'MsgBox "Greatest length is " & lngMax & " beneath Range " & Cells(1, lngCol).Address(0, 0)
        .Range(.Cells(2, lngCol), .Cells(lngMax, lngCol)).Copy Destination:=Worksheets("Sheet3").Range("A2")
    End With


'Début du VLOOKUP il faudrait le généraliser en fonction du nombre de stocks
Sheets("Sheet3").Select
Range("B2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!RC:R[5563]C[1],2,TRUE)"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B5565")
Range("B2:B5565").Select
    
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R2C2:R5565C3,2,TRUE)"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Sheet2!R2C4:R5565C5,2,TRUE)"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],Sheet2!R2C6:R5565C7,2,TRUE)"
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:C5565")
    Range("C2:C5565").Select
    Range("D2").Select
    Selection.AutoFill Destination:=Range("D2:D5565")
    Range("D2:D5565").Select
    
End Sub

The VLOOKUP est sur la sheet3 et doit etre fait en fonction du nombre de colonnes.
Dans cet exemple "statique" il y a 3 colonnes mais celui-ci varie en fonction du nombre de stocks que vous verrez en sheet2 ainsi que de la periode.

Voici le fichier


Je vous remercie
 

Statistiques des forums

Discussions
312 864
Messages
2 093 003
Membres
105 597
dernier inscrit
romain10