Besoin d aide recherchev et msgbox

Fermé
scalaze62 Messages postés 6 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 19 janvier 2018 - 4 janv. 2018 à 00:19
scalaze62 Messages postés 6 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 19 janvier 2018 - 9 janv. 2018 à 22:56
Bonsoir,

je réalise une simple feuille de Control de sortie de préparation par code unique

En colonne B produit attendu

En D ma zone de produit préparer

Apres recherche, j ai trouvé un code et je l ai adapté.

SI(NB.SI($D$4:$D$200;B4)>1;"Doublon";SIERREUR(RECHERCHEV(B4;$D$4:$D$200;1;0);"Absent"))

comment mettre alors produit Non attendu en msgbox.

Merci pour votre aide à venir.

https://www.cjoint.com/c/HAdxcoE2XrZ


4 réponses

LaStroumfette Messages postés 7 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 5 janvier 2018
4 janv. 2018 à 01:00
Bonsoir
La msgbox ne fonctionne qu'en vba
Votre "si" est une fonction Excel
Il faudrait faire une petite macro à la place
Ou si vous savez faire, vous pouvez créer vous même une fonction spéciale qui sera appelée comme les fonctions standards d'excel
0
scalaze62 Messages postés 6 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 19 janvier 2018
4 janv. 2018 à 18:20
Bonsoir LaStroumfette,

Merci pour votre réponse mais je cherche justement à comment créer en vba ce msgbox

pour faire simple,même si pour moi c est compliqué :

si mon produit en D n'est pas prévu en B alors message box " produit non attendu.

cordialement
0
LaStroumfette Messages postés 7 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 5 janvier 2018
Modifié le 5 janv. 2018 à 20:04
voilà le code que j'ai fait en vba
j'ai essayé de mettre des commentaires pour que ce soit un peu plus clair

il suffit de rajouter un module dans votre document excel et d'y coller le code ci dessous

ensuite dans le document en lui même, dans une cellule, il suffit d'appeler la fonction comme une fonction normale
voici le lien vers le fichier que j'ai modifié https://www.cjoint.com/c/HAftdE5tXsy

par contre pour le changement de couleur je n'ai pas réussi à trouver comment faire, ça bugge
donc le seul moyen que je vois c'est une mise en forme conditionnelle

j'espère que ça vous aidera

Function test(Val As Range, ZoneControl As Range) As String

Dim i As Double
Dim TxtVal As String

i = 0 'on initialise i à 0
TxtVal = Val.Value

'correspond à NB.SI($D$4:$D$200;B4)>1;"Doublon"

For Each cell In ZoneControl 'balaye toutes les cellules de la colonne D
    If cell.Value = Val.Value Then 'si la valeur de la colonne D est égale à celle qu'on cherche, il incrémente i de 1
        i = i + 1
    End If
Next cell 'passe à la cellule suivante


'i est égal à 1 donc il existe
If i = 1 Then
    test = TxtVal 'il affiche la valeur
      trouver comment modifier la couleur à cet endroit
    Exit Function
End If

'i est supp à un donc il y a un doublon
If i > 1 Then
    MsgBox "Doublon" 'affiche la boite de message
    test = "doublon" 'inscrit doublon dans la cellule
    Exit Function
End If

'i est égal à 0 donc il n'existe pas dans la liste
If i = 0 Then
    MsgBox "Référence non attendue" 'affiche la boite de message
    test = "absent" 'inscrit doublon dans la cellule
    Exit Function
End If

End Function

0
scalaze62 Messages postés 6 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 19 janvier 2018
9 janv. 2018 à 22:56
scalaze62 - 9 janv. 2018 à 22:53
Bonsoir LaStroumfette,

Merci pour le code, j ai réussi à appeler la fonction comme une fonction normale.

après test il y a quelque bug a savoir les fenêtres d alerte s affiche plusieurs fois et ceux même a l'ouverture du fichier.

j ai l impression que la boucle continu malgré la valeur trouvé

et si cellule vide en B la boucle ne s'arrete pas.

Je joint le fichier sur lequel je travail. https://www.cjoint.com/c/HAjvWK7IP0Z

Cordialement.
0