Pb de récupération de données via VLookup/Recherchev

Bonjour,

Je suis bloqué depuis plusieurs jours par ce souci!

Mon problème se résume à ne pas pouvoir récupérer des numéros Matricule à partir de numéros de Téléphones présents dans un tableau sur une autre feuille.

J'ai joué sur les formats des colonnes cibles et sources (texte, Standard, Special : numéro) ainsi que les copier/coller. En vain. Le matricule s'affiche uniquement lorsque je ressaisis manuellement le numéro à la main dans cellule de la colonne source. Si je relance la procédure après cette dernière action, le matricule s'affiche!(il y a en tout plusieurs milliers de numéros )

Plus précisement :

Dans le cadre d'une refacturation téléphonique pour chaque direction, je traite tout d'abord un fichier excel brut adressé par notre opérateur téléphonique (cf fichier ci joint -modifié au niveau des num de tel par souci de confidentialité) via la procedure fact_fixe_02 (cf ci dessous).

J'obtiens une feuille "facturation" qui contient un montant par numéro pour laquelle je souhaite faire afficher le matricule en colonne H.

A partir de cette feuille, je lance la procedure Identification () (cf ci dessous)

Le fichier source est le fichier référentiel au sein duquel les numéros sont affichés en colonne S et le matricule en colonne W.

Ci joint, le fichier de l'opérateur.

J'aimerais ajouter le fichier référentiel mais vu qu'il faut modifier les numéros par condifentialité, le problème ne se reproduit pas! Vu que des que je resaissis le numéro à la main, le matricule s'affiche correctement.

Option Explicit
Sub Factur_Fixe_02()
'
' Facturation Fixe V.02

' Copie de la Feuille active sur une nouvelle feuille renommée Facturation
Cells.Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Facturation"
Sheets("Facturation").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range("a:f,h:i,p:q").Delete Shift:=xlToLeft
Selection.Columns.AutoFit

ActiveSheet.Range("$A$1:$J$2000").AutoFilter Field:=3, Criteria1:="<>"
    Columns("A:A").Select
    ' Selection.Sort Key1:=Range("A1")

  ' Sous totaux par numéro de tel
    Application.DisplayAlerts = False
    Cells.Select
    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(7, 17), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    Application.DisplayAlerts = True

End Sub
Sub Identification()
Dim Mat As Range
Dim Boucle As Long, LigneFin As Long
Dim Lecture As String

Set Mat = Sheets("referentiel").Range("S1:W10000")

 With Sheets("Facturation")
  LigneFin = .Range("A" & Rows.Count).End(xlUp).Row
  .Columns("H:H").NumberFormat = "@"
  For Boucle = 2 To LigneFin - 1
    Lecture = .Range("A" & Boucle)
    If InStr(1, Lecture, "Total ") > 0 Then Lecture = Replace(Lecture, "Total ", "")
    .Cells(Boucle, 8) = WorksheetFunction.VLookup(CDbl(Lecture), Mat, 5, False)
    '.Cells(Boucle, 8) = Mat.Find(CDbl(Lecture), lookat:=xlWhole).Offset(0, 4)
  Next Boucle
 End With
End Sub

Merci pour votre aide, en esperant que je ne vous ai pas perdu en route!

p.s: j'ai testé egalement via la fonction recherchev(), j'ai le meme problème. J'ai le message d'erreur NOM? qui s'affiche

Pour résumer le problème :

1.Sur une nouvelle feuille, je copie colle le fichier de l'opérateur Téléphonique (fichier ci joint).

2.Je lance la procédure Fact_Fixe_02 : j'obtiens la feuille Facturation.

3.Au sein de cette feuille Facturation, je lance la procédure Identification afin de voir apparaitre ds la colonne H le Matricule (Fichier Source : Référentiel qui comprend en colonne S les numéros et en W les matricules)

4. Malheureusement, le message d'erreur "Erreur d'execution 1004 Impossible de lire la propriété Vlookup de la classe Worksheetfunction ".

Sauf, si au sein du la feuille Referentiel, je ressaisis manuellement le numéro (en format Standard ou Special Num Tel). Cette fois, le matricule s'affiche après avoir relancé la procédure identification.

Merci

Je viens de trouver : en fait, en enlevant la fonction CDlb de VLookup, cela fonctionne.

[size=150]Pour terminer, est ce que qqun pourrait m'indiquer comment on gère les N/A avec vlookup ?

[/size]

Je souhaite ajouter d'autres champs en plus des matricules : nom, prenom, section et direction :

 
.Cells(Boucle, 8) = WorksheetFunction.VLookup(Lecture, Mat, 5, False)
.Cells(Boucle, 9) = WorksheetFunction.VLookup(Lecture, Mat, 8, False)
.Cells(Boucle, 10) = WorksheetFunction.VLookup(Lecture, Mat, 7, False)
.Cells(Boucle, 11) = WorksheetFunction.VLookup(Lecture, Mat, 9, False)

Par contre, à la source, ces colonne possèdent des N/A qui font stopper logiquement le vlookup.

Sur un site anglais, j'ai vu qu'ils proposaient cette exemple : =IF(COUNTIF(A1:A100,"Dog"),VLOOKUP("Dog",A1100,2,FALSE),0)

Mais je ne vois pas comment je peux l'integrer dans mon code.

Bonsoir

Sans moyen de test pas facile à trouver une solution

Essayes

If Application.CountIf(Mat, Lecture) > 0 Then   ' On vérifie si Lecture est présent dans Mat
  .Cells(Boucle, 8) = WorksheetFunction.VLookup(Lecture, Mat, 5, False)
  .Cells(Boucle, 9) = WorksheetFunction.VLookup(Lecture, Mat, 8, False)
  .Cells(Boucle, 10) = WorksheetFunction.VLookup(Lecture, Mat, 7, False)
  .Cells(Boucle, 11) = WorksheetFunction.VLookup(Lecture, Mat, 9, False)
End If

Autre solution la force brutale

Sub test1()
  On Error Resume Next
  .Cells(Boucle, 8) = WorksheetFunction.VLookup(Lecture, Mat, 5, False)
  .Cells(Boucle, 9) = WorksheetFunction.VLookup(Lecture, Mat, 8, False)
  .Cells(Boucle, 10) = WorksheetFunction.VLookup(Lecture, Mat, 7, False)
  .Cells(Boucle, 11) = WorksheetFunction.VLookup(Lecture, Mat, 9, False)
End Sub

Merci Banzai.

Desolé pour le retard, j'avais effectivement choisi le On Error Resume Next

Rechercher des sujets similaires à "recuperation donnees via vlookup recherchev"