Verification VBa à partir d'une liste

Résolu
mcou -  
 mcou -
Bonjour,

Je souhaite vérifier la saisie des codes budgets (sans utiliser la validation des données) à partir de VBA. Ma liste est contenue dans une feuille appelée Listing Code et se trouve sur l'ensemble de la colonne A de cette feuille. Par ailleurs, j'ai défini ma colonne A comme étant "CodeBudget".
Ma feuille de suivi, "FOLLOW-UP" est l'endroit où mes commandes sont saisies et où les codes budgets sont renseignés selon la commande dans la colonnne F.

Aussi, j'ai commencé à écrire un code, mais mes connaissances sont limitées.
Quelqu'un aurait-il une piste à me suggérer ?
Je vous joins mon document :
http://cjoint.com/?0GxoszCAUzV
Mon code :
Option Explicit

Sub verif_code_budget()


Sheets("FOLLOW-UP").Range(Range("F4"), Range("F65000").End(xlUp)).Select
For Each cell In Selection


Do While cell.Value <> Sheets("Listing code").Range("A37").Value
'ici en fait je souhaiterais que la cell.value correspondant au moins à une valeur de ma liste "CodeBudget" du Listing code (colonne A)
' si ce n'est pas le cas, je veux proposer à l'utilisateur de rechanger cela à partir d'une liste déroulante proposant tous les codes budget (colonne A)

MsgBox "Erreur de saisie", vbCritical, "VERIFICATION SAISIE"

Loop
Next

End Sub


Merci de votre aide.

3 réponses

  1. mcou
     
    Bonjour,

    Je sollicite de nouveau votre aide. Avez-vous des idées de solutions ?
    Merci
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    ca vient, ca vient...

    en fin de matinée, j'espère
    mais ce serait + pratique avec un extrait de ton classeur
    pour joindre une pièce
    mettre le classeur sans données confidentielles en pièce jointe sur
    https://www.cjoint.com/
    puis copier l'adresse du lien et la coller dans le message de réponse

    Dans l'attente
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Michel,

      Apparemment, le fichier est dispo ici : https://www.cjoint.com/?0GxoszCAUzV

      Besoin d'un p'tit café ce matin?

      Bonne journée.
      0
    2. mcou
       
      J'avais pensé à la pièce jointe, c'est plus facile d'expliquer avec l'exemple concret ;)
      Merci à vous.
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bon j'ai bu mon caoua! :o)

    j'avoue ne pas comprebdre le coup de la liste de validation . pour ma part j'opterai plut^t pour un formulaire où on taperait le numéro de code... tu dis

    en attendant:
    Option Explicit
    
    Sub verif_code_budget()
    Dim Derlig As Integer, T_code
    Dim Liste As Range, cptr As Integer
    
    Application.ScreenUpdating = False
    
    With Sheets("FOLLOW-UP")
         Derlig = .Range("F65000").End(xlUp).Row
         T_code = Application.Transpose(.Range(.Cells(4, "F"), .Cells(Derlig, "F")).Value)
    End With
    With Sheets("Listing code")
         Derlig = .Range("A65000").End(xlUp).Row
         Set Liste = .Range(.Cells(2, "A"), .Cells(Derlig, "A"))
         For cptr = 1 To UBound(T_code)
              If Application.CountIf(Liste, T_code(cptr)) = 0 Then
                   MsgBox "Erreur de saisie: " & T_code(cptr) & " inconnu !", vbCritical, "VERIFICATION SAISIE"
                   Sheets("FOLLOW-UP").Cells(cptr + 3, "F").Select
                   'EN ATTENTE DECISION FORMULAIRE
                   Exit Sub
              End If
         Next
    End With
    
    End Sub


    0
    1. mcou
       
      Votre code fonctionne parfaitement bien.
      Merci !
      Je n'ai jamais fait usage de formulaire dans mes macros. Comment cela fonctionne-t-il ?
      J'aimerais bien en effet proposer une liste déroulante via un formulaire pour la modification du code une fois que l'erreur est repérée.
      Un ptit coup de pouce supplémentaire ?
      Je vais faire des recherches par moi même aussi. Merci.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK, je te fais ça dans l'après-midi
      0
    3. mcou
       
      merci beaucoup.
      je commence à comprendre le fonctionnement des userform... faut que je m'y mette ! ^^
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      excuse le retard , les Canadairs qui passent sans arrêt depuis hier apres-midi perturbent tout le monde dans le coin -(sud 07)

      proposition:
      https://www.cjoint.com/?3Gyra6OyHIV

      Il serait peut-^tre + confortable pour l'utilisateur et + simple que la correction se fasse immédiatement à la fin d'une saisie dans la colonne F:il faudrait employer une procédure événementielle worksheet_change qui réagirait en cas d'erreur et ouvrirait l'userform
      ou encore mieux:
      avec un worksheet_selection_change, sur une cellule vide, l'userform serait automatiquement ouvert: choix +sûr et plus rapide que de saisir toute la désignation

      A toi de voir
      0
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ajouter à la dernière ligne de la macro module1 un msgbox "vérification terminée"
      0