Besoin d aide recherchev et msgbox

scalaze62 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
scalaze62 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. LaStroumfette Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  2. scalaze62 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. LaStroumfette Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. scalaze62 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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