Sub test()
'Déclare les variables
Dim DerniereLigne As Long, i As Long, La_ligne_ref As Long
Dim La_Colonne_Ref As Integer, La_Colonne_QT As Integer, La_Colonne_Remise As Integer
Dim FT, Base, Col, Lig
Dim Reference As String, Depot As String, Gamme As String, Design As String
Dim Quantite As Long, Remise As Long
Dim Prix As Single, Total As Single, Px_Remise As Single
'Gèle l'écran pendant l'opération
Application.ScreenUpdating = False
'Set les feuilles dans des variables
Set FT = Sheets("inventaire VBA ")
Set Base = Sheets("base ")
FT.Select
'On va aller fiter les bons numéros de colonnes dans des variables. Comme ça, si jamais tu ajoutes ou enlève
'des colonnes, ça va fonctionner quand même.
Set Col = Range("A1:AA1").Find("reference ", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
La_Colonne_Ref = Col.Column
Else
Exit Sub
End If
Set Col = Range("A1:AA1").Find("quantité", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
La_Colonne_QT = Col.Column
Else
Exit Sub
End If
Set Col = Range("A1:AA1").Find("remise ", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
La_Colonne_Remise = Col.Column
Else
Exit Sub
End If
'Set la dernière ligne de l'onglet FT dans une variable
DerniereLigne = Cells(65536, La_Colonne_Ref).End(xlUp).Row
'On va clearer ton tableau
Range(Cells(2, 1), Cells(DerniereLigne, 2)).ClearContents
Range(Cells(2, 4), Cells(DerniereLigne, 5)).ClearContents
Range(Cells(2, 7), Cells(DerniereLigne, 7)).ClearContents
Range(Cells(2, 9), Cells(DerniereLigne, 9)).ClearContents
'Pour chacune des références de ton tableau, on va aller chercher l'information relative dans le tableau
'de l'onglet Base.
For i = 2 To DerniereLigne
FT.Select
Reference = Cells(i, La_Colonne_Ref).Value 'Set la référence dans une variable
Quantite = Cells(i, La_Colonne_QT).Value 'Set la quantite dans une variable
Remise = Cells(i, La_Colonne_Remise).Value 'Set la remise dans une variable
Base.Select
'On va aller trouver la bonne ligne de travail
Set Lig = Range("C1:C65536").Find(Reference, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then
La_ligne_ref = Lig.Row
Else
GoTo Continuer
'Votre Plan B
End If
'On entre les informations désirées dans des variables
Depot = Cells(La_ligne_ref, 1).Value
Gamme = Cells(La_ligne_ref, 2).Value
Design = Cells(La_ligne_ref, 3).Value
Prix = Cells(La_ligne_ref, 5).Value
Total = Prix * Quantite
If Prix = 0 Then
Px_Remise = 0
Else
Px_Remise = Total * Remise / 100
End If
FT.Select
'On vient inscrire dans l'onglet FT l'information qu'on a trouvé dans l'onglet Base
Cells(i, La_Colonne_Ref - 2).Value = Depot
Cells(i, La_Colonne_Ref - 1).Value = Gamme
Cells(i, La_Colonne_Ref + 1).Value = Design
Cells(i, La_Colonne_Ref + 2).Value = Prix
Cells(i, La_Colonne_Ref + 4).Value = Total
Cells(i, La_Colonne_Ref + 6).Value = Px_Remise
Continuer:
Reference = ""
Quantite = 0
Remise = 0
Depot = ""
Gamme = ""
Design = ""
Prix = 0
Total = 0
Px_Remise = 0
Next i
Set FT = Nothing
Set Base = Nothing
End Sub