VLookUp sur données texte
Bonjour à tous,
J'ai un problème qui en apparence est assez simple mais que je n'arrive pas à résoudre seul malheureusement.
J'ai créé une macro avec un simple VLookUp qui va coller les données d'un autre classeur correspondantes à une valeur clé qui est entrée dans le classeur actif.
Cependant, la colonne dans laquelle est ma valeur clé est en format Texte et du coup le VLookUp ne fonctionne pas lorsqu'une donnée numérique est entrée... J'ai essayé le CDbl(Cell.value) mais soit je l'utilise mal soit ça ne marche pas donc je suis un peu bloqué.
Je vous mets le code de ma déclaration des variables (codeGP étant la valeur clé)
Public Sub RechercherValeurvCodeGP(ByVal codeGP As String, NumColRangeData As String, RangeData As String, ByVal RangeResultat As Range, Fichier As String, Feuille As String)
Et ici le code du VLookUp inclus dans un Call ( Range("A10") correspond au codeGP, la valeur clé
Call RechercherValeurvCodeGP(Range("A10"), "2", "$B$2:$CN$1000", wstable.Range("B10"), "SI_CMCICAM_FCPE_JURIDIQUE.csv", "SI_CMCICAM_FCPE_JURIDIQUE")
Merci d'avance et bonne journée à vous
Bonjour :
ByVal codeGP As String
Tu demandes un codeGP sous forme de texte, CDbl convertie en valeur décimale.
Tente plutôt :
CStr(Range("A10"))
Ca ne marche malheureusement pas car le VLookUp ne marche pas avec une donnée texte j'ai l'impression
Teste sur ta feuille avec un RECHERCHEV, ça fonctionne sans problème sur du texte. Je pense qu'il faut que tu épluches ton code.
Utilise l’exécution pas à pas, place des espions sur tes variables pour observer leurs valeurs...
Autre question, pourquoi s'embêter à faire tout ça ? Si c'est une simple recherche, utilise la fonction classique plutôt que de faire une fonction perso qui ne marche pas ! VBA n'est pas non plus utile dans l'histoire...
J'ai essayé et le recherchev marche avec un CNUM sur le codegp mais effectivement il doit y avoir un bout de code qui bloque ça.
Je fais tout ça car je dois automatiser un énorme tableau grâce à cette macro que j'applique sur un paquet de cellules d'un coup et qui me fait gagner énormément de temps.
Je mets le code complet de mon VLookUp au cas où ça pourrait aider parce que moi je ne trouve vraiment pas...
Option Explicit
Public Sub RechercherValeurvCodeGP(ByVal codeGP As String, NumColRangeData As String, RangeData As String, ByVal RangeResultat As Range, Fichier As String, Feuille As String)
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Dim Repertoire As String
Repertoire = "\\ROPC"
Workbooks.Open Filename:=Repertoire & "\" & Fichier, Origin:=xlWindows, local:=True
Dim temp As String
temp = "=vlookup(""" & codeGP & """,'" & Repertoire & "\[" & Fichier & "]" & Feuille & "'!" & RangeData & "," & NumColRangeData & ",false)"
RangeResultat.Value = temp
RangeResultat.Value = WorksheetFunction.Application.VLookup(codeGP, "'" & Repertoire & "\[" & Fichier & "]" & Feuille & "'!" & RangeData & "'", NumColRangeData)
On Error Resume Next
temp = Application.WorksheetFunction.VLookup(codeGP, Workbooks(Fichier).Sheets(Feuille).Range(RangeData), NumColRangeData, False)
If IsError(temp) = False Then
RangeResultat.Value = Application.WorksheetFunction.VLookup(codeGP, Workbooks(Fichier).Sheets(Feuille).Range(RangeData), NumColRangeData, False)
Else
RangeResultat.Value = ""
End If
Workbooks(Fichier).Close
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
End Sub