Re : Problème vba "vlookup"
Bonsoir,
Nous avons oublié une chose sur la fonction VLookup/RECHERCHEV, c'est que la recherche de la valeur se fait sur la 1ère colonne de la plage/matrice (voir l'aide)...
Donc ici cette fonction n'est pas adaptée au problème.
Voici une solution qui utilise la fonction Match (EQUIV) :
Private Sub CommandButton1_Click()
Dim a As Long
Dim k As Long
Dim test As Byte
On Error Resume Next
a = 1
For k = 9 To 2701 'liste des cases de c/c
If Worksheets("cc").Cells(k, 1) <> "" Then 'si les cases ne sont pas vides
a = a + 1 'le a permet de ne pas s'aligner sur les liges du feuillet cc
Worksheets("vba").Cells(a, 1) = Worksheets("cc").Cells(k, 1) 'c/c
Worksheets("vba").Cells(a, 2) = Worksheets("cc").Cells(k, 2) 'Machines
test = 0
test = Application.Match(Worksheets("vba").Cells(a, 1), Worksheets("cc").Range("A2701:C2701"), 0)
If test Then Worksheets("vba").Cells(a, 3) = Worksheets("cc").Cells(2701, 3)
End If
Next k
End Sub
Ou plus simplement, "vba" étant la feuille active :
Private Sub CommandButton1_Click()
Dim a As Long, k As Long, test as Byte
On Error Resume Next
a = 1
For k = 9 To 2701 'liste des cases de c/c
If Sheets("cc").Cells(k, 1) <> "" Then 'si les cases ne sont pas vides
a = a + 1 'le a permet de ne pas s'aligner sur les liges du feuillet cc
Cells(a, 1) = Sheets("cc").Cells(k, 1) 'c/c
Cells(a, 2) = Sheets("cc").Cells(k, 2) 'Machines
test = 0
test = Application.Match(Cells(a, 1), Sheets("cc").Range("A2701:C2701"), 0)
If test Then Cells(a, 3) = Sheets("cc").Cells(2701, 3)
End If
Next
End Sub
A+