Problème de conversion suite à une RechercheV
Bonjour à tous et toutes,
Je me permets de créer ce sujet car j'ai un problème sur ma macro qui me permet de créer des dossiers et sous dossiers en fonction du numéro de facture. En effet au niveau de la recherchev (code présent ci-dessous), comme vous pouvez le voir sur le fichier "Création dossier forum" dans l'onglet "GLOBAL" (image ci-dessous) tout à l'air de bien marcher sauf à deux endroits où on dirait que la recherchev ne trouve pas la correspondance et affiche donc des correspondances erronées, or ces éléments se trouvent bien dans ma "Table conversion".
Function InitialiserTP()
Dim nbLignes As Long
Dim nomTP As String
Dim ligneDebutTP As Long
Dim ligneFinTP As Long
Dim NouveauTP As String
Dim Plage As Range
Dim InfoComplémentaire As String
nbLignes = ThisWorkbook.Sheets("GLOBAL").Cells(Rows.Count, 1).End(xlUp).Row
ligneDebutTP = 2
Set Plage = ThisWorkbook.Sheets("Table conversion").Range("A:C")
While ligneDebutTP <= nbLignes
nomTP = ThisWorkbook.Sheets("GLOBAL").Cells(ligneDebutTP, 2).Value
' Debug.Print ThisWorkbook.Sheets("GLOBAL").Cells(ligneDebutTP, 2).Value
ligneFinTP = CalculerDerniereLigneTP(nomTP, ligneDebutTP)
On Error Resume Next
NouveauTP = Application.WorksheetFunction.VLookup(nomTP, Plage, 2, 0)
If Err.Number > 0 Then
Err.Clear
For i = ligneDebutTP To ligneFinTP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Value = "NON TROUVE" 'Modification de la colonne TP pour avoir les nouveaux noms TP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 4).Value = "" 'Rajout des infos complémentaires en fonction du TP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Interior.Color = RGB(255, 0, 0)
ThisWorkbook.Sheets("GLOBAL").Cells(i, 4).Interior.Color = RGB(255, 0, 0)
Next i
Else
InfoComplémentaire = Application.WorksheetFunction.VLookup(nomTP, Plage, 3, 0)
If (NouveauTP <> "") Then
For i = ligneDebutTP To ligneFinTP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Value = NouveauTP 'Modification de la colonne TP pour avoir les nouveaux noms TP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 4).Value = InfoComplémentaire 'Rajout des infos complémentaires en fonction du TP
ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Interior.Color = RGB(212, 229, 244)
ThisWorkbook.Sheets("GLOBAL").Cells(i, 4).Interior.Color = RGB(212, 229, 244)
Next i
End If
End If
On Error GoTo 0
ligneDebutTP = ligneFinTP + 1
Wend
End Function
J'aurais donc besoin de votre aide car j'ai beau tourner le problème dans tous les sens je ne vois pas la solution.
Je vous joins le fichier contenant la macro (dans le module "ConversionTP") ainsi que le fichier d'import ("Extraction forum").
Merci pour votre aide futur sur ce sujet.
Bonne journée
bonjour,
ce n'est pas un problème de recherchev.
C'est cette ligne pose problème
If (InStr(1, nomTP_v, ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Value) > 0) Thenlorsque nomTP_v contient "AIOSANTE GMC HENNER", la condition est vraie pour les lignes "GMC". et donc toutes les lignes allant de "AIOSANTE GMC HENNER" à "GMC" seront considérées comme devant faire l'objet de la même conversion.
Tu peux adapter ton code ainsi.
Function CalculerDerniereLigneTP(nomTP_v As String, debutTP_v As Long) As Long 'calcul la dernière ligne du fichier GLOBAL
Dim i As Long
Dim nbLignes As Long
Dim finTP As Long
nbLignes = ThisWorkbook.Sheets("GLOBAL").Cells(Rows.Count, 1).End(xlUp).Row
For i = debutTP_v To nbLignes
If nomTP_v = ThisWorkbook.Sheets("GLOBAL").Cells(i, 3).Value Then 'tant qu'on a le même nom
finTP = i
Else
Exit For
End If
Next i
CalculerDerniereLigneTP = finTP
End FunctionBonjour h2so4,
Je viens de faire la modification est ça marche parfaitement, je te remercie pour ton aide car je ne savais plus quoi faire pour trouver la solution.
Et il est vrai que je n'avais pas regardé sur mon calcul de dernière ligne si le problème pouvait venir de là.
En tout cas je te remercie énormément.
Bonne journée