Pb Recherche sur des valeurs concatenée

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.

Bonsoir à tous,

Personne n'a trouvé de solution à mon problème?

Auriez-vous peut-être besoin de complément d'information.

bonsoir,

peux-tu joindre le fichier avec le code ?

Bonsoir h2SO4,

Je l'ai réduit au maximum pour pouvoir l'envoyer.

Je reste à ta disposition si tu as des questions.

Je te remercie pour ton aide.

bonsoir,

malheureusement ce que tu as envoyé ne m'aide pas plus

pourrais-tu insérer une instruction msgbox dans ton code comme ci-dessous. executer ta macro et nous dire le résultat de l'affichage du msgbox

        Else
        'On recherche dans la base messagerie, la ligne correspondant au département
       msgbox dpt.value & locspe.value
       Set celluleRecherche = Worksheets("MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, lookat:=xlWhole)

Re,

La réponse de la msgbox est la bonne : 74Haute Montagne

Je pense que c'est donc un problème de format entre ma colonne E:E dans ma grille tarifaire (feuille "MESS") et le concaténé de ma MACRO

Bonjour

Rajoutes dans le find la paramètre surligné

Set celluleRecherche = Worksheets("MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, LookIn:=xlValues, lookat:=xlWhole)

rebonsoir,

rajoute un lookin dans ton find

Set celluleRecherche = Worksheets("MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, lookin:=xlValues, lookat:=xlWhole)

Banzai m'a précédé

Bonjour H2So4 et Banzai,

C'est super je vous remercie ça ma marche.

Par contre, le lookin me pose un problème quand je recherche ma colonne (le code qui suit pour rechercher ma colonne) :

[code][Set celluleRecherche = Worksheets("KUEHNE NAGEL 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/code]

cellulerecherche prend la valeur de de ma concaténation :

[code][Set celluleRecherche = Worksheets("KUEHNE NAGEL MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, LookIn:=xlValues, lookat:=xlWhole)/code]

Avez-vous une idée d'où cela pourrait provenir.

Bonjour

Premièrement ton code est mal placé entre les balises [code=vb ] ton code ici [/code ]

Attention j'ai fait exprès de rajouter une espace dans las balises pour te faire voir

Ensuite c'est normal que celluleRecherche prenne la valeur de la concaténation

celluleRecherche est considéré comme une cellule (style A1 à laquelle tu lui aurais donné un nom)

Sinon je n'ai pas compris ta question

Bonjour Banzai64,

Désolé pour le code, je ferai attention la prochaine fois.

En fait je souhaite récupérer le numéro de la colonne avec l'information TRANCHE POIDS qui est calculé dans ma textbox, pour pouvoir ensuite trouver le croisement approprié entre le n° de ligne que j'ai récupéré avec ma concaténation :

et celluleRecherche = Worksheets("KUEHNE NAGEL MESS").Range("E:E").Find(DPT.Value & LOCSPE.Value, LookIn:=xlValues, 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

Quand je passe à la ligne de code suivante après avoir trouvé mon n° de ligne : ligneTarif = celluleRecherche.Row

Code suivant ci-dessous :

Set celluleRecherche = Worksheets("KUEHNE NAGEL 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

La valeur de TRANCHEPOIDS est bien reconnue mais ma recherche pour trouver la cellule dans ma grille tarifaire ne se fait pas.

Sais-tu d'où ça peut venir.

J'espère que je me suis mieux exprimé.

Bonjour

Rajoutes dans le Find le paramètre surligné

Set celluleRecherche = Worksheets("MESS").Range("16:16").Find(TRANCHEPOIDS.Value, LookIn:=xlFormulas, lookat:=xlWhole)

Je ne sais pas pourquoi dans le 1er find il fallait LookIn:=xlValues et dans celui-ci LookIn:=xlFormulas

Si quelqu'un le sait qu'il partage son savoir

Merci par avance

Je te remercie,

j'aurai jamais trouvé seul. Je suis également preneur de l'information concernant cette subtilité.

Je vous remercie à tous pour cette aide précieuse!!!

Bonne journée

Rechercher des sujets similaires à "recherche valeurs concatenee"