Bonjour à tous,
Je vais essayer d'expliquer le problème que j'ai :
Je souhaite grâce à 2 valeurs extraient de textbox pour lesquelles je fais une concaténation de trouver la ligne qui correspond :
Voici la ligne de code, je n'ai pas d'affichage d'erreur mais la ligne que je recherche n'est pas trouvée alors qu'elle existe.
Set celluleRecherche = Worksheets("MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, lookat:=xlWhole)
Je vous joins également mon tableau dans lequel la macro doit allée chercher la ligne.
Ci-dessous mon code :
Private Sub CtMess_Change()
Dim ligneTarif As Integer
Dim colonneTarif As Integer
Dim celluleRecherche As Range
'On teste le département
Select Case DPT.Value 'Selon la valeur du département
Case 0, "" 'Vide, on affiche une erreur
MsgBox "Département non renseigné"
Case Else 'Pour tous les autres départements
'On contrôle le poids
If POIDS.Value = 0 Or POIDS.Value = "" Then
MsgBox "Le Poids doit être renseigné"
Else
'On recherche dans la base messagerie, la ligne correspondant au département
Set celluleRecherche = Worksheets("MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, lookat:=xlWhole)
If celluleRecherche Is Nothing Then 'Si non trouvé, on affiche une erreur
MsgBox "Département non valide : le n° du département renseigné n'existe pas."
Else
ligneTarif = celluleRecherche.Row
'On recherche la colonne correspondant au poids de l'envoi
Set celluleRecherche = Worksheets("MESS").Range("16:16").Find(TRANCHEPOIDS.Value, lookat:=xlWhole)
If celluleRecherche Is Nothing Then 'Si non trouvé, on affiche une erreur
MsgBox "Le poids doit être supérieur à 0 Kg. En Messagerie le Poids ne peut excéder 3000 KG, pour un seul destinataire"
Else
colonneTarif = celluleRecherche.Column
'On affecte la valeur trouvée dans le coût messagerie
If POIDS.Value < 100 Then
CtMess.Value = Format(Worksheets("MESS").Cells(ligneTarif, colonneTarif), "0.00€")
ElseIf POIDS.Value > 100 And POIDS.Value < 1000 Then
CtMess.Value = Format(Worksheets("MESS").Cells(ligneTarif, colonneTarif) * Application.WorksheetFunction.RoundUp(POIDS, -1) / 100, "0.00€")
ElseIf POIDS.Value >= 1000 And POIDS.Value <= 3000 Then
CtMess.Value = Format(Worksheets("MESS").Cells(ligneTarif, colonneTarif) * Application.WorksheetFunction.RoundUp(POIDS, -2) / 100, "0.00€")
Else
MsgBox "En Messagerie le Poids ne peut excéder 3000 KG, pour un même destinataire"
End If
End If
End If
End If
End Select
End Sub
J'espère que j'ai été clair,
Si quelqu'un à une idée d'où ça peut venir.
J'ai oublié de préciser que j'avais fait le test avec une recherche v excel en faisant une extraction d'une textbox que j'ai créé avec une concaténation. J'ai copier la textbox dans une cellule excel et j'ai fait une recherchev et avec excel je retrouve la valeur.