Vlookup ne fonctionne pas
Bonjour,
j'avais faits un tableau de saisie d'intervention avec les formules dans les cellules, je voudrais faire ca en vba, je me suis donc fait aidé par l'IA copilot qui m'a sorti ce code . mais j'ai un erreur 1004 sur la ligne :
nomClient = Application.WorksheetFunction.VLookup(numeroAlarme, wsClients.Range("A:E"), 2, False)
le Vlookup ne me retourne rien
La fonction est censée aller chercher dans la feuille "clients", chercher le numéro d'alarme dans la colonne A et retourner la valeur des colonne B et C, Nom clients et lieu intervention
Merci pour votre aide .
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsClients As Worksheet
Dim wsTableau As Worksheet
Dim numeroAlarme As String
Dim nomClient As String
Dim InterLieux As String
Dim cellule As Range
' Définir les feuilles
Set wsClients = ThisWorkbook.Sheets("Clients")
Set wsTableau = ThisWorkbook.Sheets("Tableau") ' Remplacez "Tableau" par le nom de votre feuille de saisie
' Vérifier si la modification concerne la colonne Numero alarme
If Not Intersect(Target, wsTableau.Columns("C")) Is Nothing Then
For Each cellule In Target
If cellule.Value <> "" Then
' Récupérer le numéro d'alarme
numeroAlarme = cellule.Value
' Rechercher les informations dans la feuille Clients
'On Error Resume Next
nomClient = Application.WorksheetFunction.VLookup(numeroAlarme, wsClients.Range("A:E"), 2, False)
InterLieux = Application.WorksheetFunction.VLookup(numeroAlarme, wsClients.Range("A:E"), 3, False)
On Error GoTo 0
' Afficher la valeur de nomClient
MsgBox "Le nom du client est : " & nomClient
MsgBox "Le lieu d'intervention est : " & InterLieux
' Remplir les colonnes Nom du client et Service d'intervention
cellule.Offset(0, 4).Value = nomClient
cellule.Offset(0, 5).Value = InterLieux
' Ajouter la date et l'heure actuelles
cellule.Offset(0, -2).Value = Date
cellule.Offset(0, -1).Value = Time
End If
Next cellule
End If
End Sub- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Pourquoi vouloir faire ceci via VBA spécifiquement ? As-tu essayé de mettre la formule manuellement pour voir le résultat ?
Bonjour,
Une petite contribution.
Cdlt.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsClients As Worksheet
Dim numeroAlarme, n
Dim nomClient As String, InterLieux As String
Dim cellule As Range
On Error GoTo errHandler
Set wsClients = ThisWorkbook.Sheets("Clients")
If Not Intersect(Target, Me.Columns("C")) Is Nothing Then
For Each cellule In Target
If cellule.Value <> "" Then
Application.EnableEvents = False
numeroAlarme = cellule.Value
n = Application.Match(numeroAlarme, wsClients.Range("A:A"), 0)
If IsError(n) Then
MsgBox "Le numéro d'alarme est inconnu !", 64, "Information"
cellule.Value = vbNullString
Else
nomClient = WorksheetFunction.VLookup(numeroAlarme, wsClients.Range("A:E"), 2, False)
InterLieux = WorksheetFunction.VLookup(numeroAlarme, wsClients.Range("A:E"), 3, False)
MsgBox "Le nom du client est : " & nomClient
MsgBox "Le lieu d'intervention est : " & InterLieux
cellule.Offset(0, 4).Value = nomClient
cellule.Offset(0, 5).Value = InterLieux
cellule.Offset(0, -2).Value = Date
cellule.Offset(0, -1).Value = Time
End If
End If
Next cellule
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
errHandler:
MsgBox "Erreur : " & Err.Number & Chr(10) & Err.Description
Resume errHandler
End Subwhoooa .. merci pour ta contribution, incroyable ca marche niquel.
Quel etait l'erreur stp histoire que je comprenne ce qui bloquait ?
Merci encore
Bonjour,
Il faut faire attention au typage des variables (dans ce cas en variant).
Cdlt.
Dim numeroAlarme, n