Syntaxe dans revoie de cellule Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
T
Tylerdurden
Jeune membre
Jeune membre
Messages : 25
Inscrit le : 24 janvier 2018
Version d'Excel : Excel 2016

Message par Tylerdurden » 9 avril 2018, 19:42

Bonjour à tous,

J'ai peu ou prou réussi avec l'aide de généreux bénévoles à créer une fonction qui scan le nom de fournisseurs dans des libellés.

Je rencontre néanmoins un nouveau problème que je vous soumet.

Function bn(s, lf)

t = Split(UCase(s), " ")
For i = LBound(t) To UBound(t)
For Each fournisseur In lf
fournisseur = UCase(fournisseur)
If fournisseur <> "" Then
If t(i) = fournisseur Then bn = fournisseur: Exit Function
End If
Next
Next i
bn = ""
End Function

Ici, la fonction va scanner les chaînes de caractères dans "s" et voir si une chaîne correspond à un fournisseur dans
ma liste.
Si tel est le cas, la fonction renvoi "fournisseur" dans ma liste.

Or, j'aimerais plutôt ceci:

Function bn(s, lf)

t = Split(UCase(s), " ")
For i = LBound(t) To UBound(t)
For Each fournisseur In lf
fournisseur = UCase(fournisseur)
If fournisseur <> "" Then
If t(i) = fournisseur Then bn = Sheets("Liste").Cells(fournisseur.Row, 1): Exit Function
End If
Next
Next i
bn = ""
End Function

Ici, la fonction ne renvoi pas "fournisseur" mais la cellule sur la ligne de "fournisseur", en colonne 1, comme sur la fonction ci dessus.

Malheureusement, cette fonction renvoi #VALEUR!, pouvez vous m'expliquer mon erreur et me corriger ?

Je vous remercie d'avance pour votre aide et vous en suis grandement reconnaissant.

Tylerdurden :mrgreen:
Recherche Hugo MAB.xlsm
(19.54 Kio) Téléchargé 7 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 6'030
Appréciations reçues : 351
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 9 avril 2018, 21:29

Bonjour,

Vous avez utilisé "if" comme variable pour la plage des fournisseurs ?
For Each fournisseur In lf
Prenons soins de nous et de notre vaisseau spatial, nous n’en n’avons qu’un ...notre planète terre
isabelle
T
Tylerdurden
Jeune membre
Jeune membre
Messages : 25
Inscrit le : 24 janvier 2018
Version d'Excel : Excel 2016

Message par Tylerdurden » 10 avril 2018, 10:11

Bonjour SabV,

Merci de ta réponse mais je ne vois pas de quoi parles tu. Il y a déja: "For each Fourniseur in lf".

L'erreur provient surtout de If t(i) = fournisseur Then bn = Sheets("Liste").Cells(fournisseur.Row, 1)
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 6'030
Appréciations reçues : 351
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 10 avril 2018, 17:16

Bonjour,

à tester,
Function bn(s, lf)
t = Split(UCase(s), " ")
For i = LBound(t) To UBound(t)
    For Each fournisseur In lf
      n = fournisseur.Row
      fournisseur = UCase(fournisseur)
        If fournisseur <> "" Then
            If t(i) = fournisseur Then bn = Sheets("Liste").Cells(n, 1).Value: Exit Function
        End If
    Next
Next i
bn = ""
End Function
Prenons soins de nous et de notre vaisseau spatial, nous n’en n’avons qu’un ...notre planète terre
isabelle
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message