Bonjour tout le monde,
Je suis un neophyte en programmation VBA. Heureusement google est mon amis.
Par contre, j'ai cherché des solutions sur la toile mais j'ai rien trouvé.
J'aimerais connaitre la raison pour laquelle la fonction Vlookup en vba ne fonctionne pas au delà de 8500 lignes.
Je m'explique:
Dans mon fichier j'ai 2 feuilles. La première est un champs d'encodage semi-automatique à partir de la feuille 2.
Ainsi si je met un code en G15, mon code VBA recherche celui-ci dans la colonne A de la feuille 2 et complètes les différentes cellules avec les information
trouvés dans la ligne correspondante à mon code. sachant que ce dernier n'apparait qu'une seule fois. Pas de doublon possible.
Si le code en G15 se trouve dans les 8000 premières lignes tout fonctionne à merveille, au delà sa marche plus.
J'ai retourné le code dans tout les sens, je trouves pas l'erreur.
voici le code en question:
Private Sub Worksheet_Open()
Cells(c15, 3) = Date
Sheets("Action").Visible = 2
Sheets("Paramettre").Visible = 2
ActiveWorkbook.protect Structure:=True, Windows:=False
On Error Resume Next
If Not Intersect(Target, [G15]) Is Nothing Then
'charger les données Code M, Descriptions, Poids
If Target.Value <> "" Then
Application.EnableEvents = False
[D10] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60001"), 4, False)
End If
End Sub
' Insértion automatique de l'heure d'encodage
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [G15]) Is Nothing Then
'charger les données Code M, Descriptions, Poids
If Target.Value <> "" Then
Application.EnableEvents = False
[I15] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 3, False)
[I17] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 4, False)
[M15] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 6, False)
[L2] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 7, False)
[O7] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 10, False)
If Not IsError(Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 14, False)) Then
Quoi = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 2, False)
Quoi2 = Quoi
Merci pour vos éclaircissement
DimiJuju
Je suis un neophyte en programmation VBA. Heureusement google est mon amis.
Par contre, j'ai cherché des solutions sur la toile mais j'ai rien trouvé.
J'aimerais connaitre la raison pour laquelle la fonction Vlookup en vba ne fonctionne pas au delà de 8500 lignes.
Je m'explique:
Dans mon fichier j'ai 2 feuilles. La première est un champs d'encodage semi-automatique à partir de la feuille 2.
Ainsi si je met un code en G15, mon code VBA recherche celui-ci dans la colonne A de la feuille 2 et complètes les différentes cellules avec les information
trouvés dans la ligne correspondante à mon code. sachant que ce dernier n'apparait qu'une seule fois. Pas de doublon possible.
Si le code en G15 se trouve dans les 8000 premières lignes tout fonctionne à merveille, au delà sa marche plus.
J'ai retourné le code dans tout les sens, je trouves pas l'erreur.
voici le code en question:
Private Sub Worksheet_Open()
Cells(c15, 3) = Date
Sheets("Action").Visible = 2
Sheets("Paramettre").Visible = 2
ActiveWorkbook.protect Structure:=True, Windows:=False
On Error Resume Next
If Not Intersect(Target, [G15]) Is Nothing Then
'charger les données Code M, Descriptions, Poids
If Target.Value <> "" Then
Application.EnableEvents = False
[D10] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60001"), 4, False)
End If
End Sub
' Insértion automatique de l'heure d'encodage
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [G15]) Is Nothing Then
'charger les données Code M, Descriptions, Poids
If Target.Value <> "" Then
Application.EnableEvents = False
[I15] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 3, False)
[I17] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 4, False)
[M15] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 6, False)
[L2] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 7, False)
[O7] = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 10, False)
If Not IsError(Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 14, False)) Then
Quoi = Application.WorksheetFunction.VLookup(Target.Value, Sheet2.Range("A2:K60000"), 2, False)
Quoi2 = Quoi
Merci pour vos éclaircissement
DimiJuju