Recherche info dans une feuille vba

Nimbus

XLDnaute Occasionnel
Bonjour le forum,

Mon problème est le suivant:

Je veux que quand j'appui sur mon bouton "Valider" de mon USERFORM, le programme aille rechercher une donnée (%NC) dans ma feuille "Synthese".

Ensuite, si ce "%NC" est sup à 80% alors il imprime une feuille appelé "FA" sinon, un message box s'affiche pour demander si l'on veut ou non imprimer le feuille "FA".

J'espère que ma demande est claire et que vous pourrez m'aider!

Merci, d'avance, pour l'aide que vous m'apporterez!!

Nimbus
 

Pièces jointes

  • MC_modif_FA.xlsm
    374.3 KB · Affichages: 36

Nimbus

XLDnaute Occasionnel
Re : Recherche info dans une feuille vba

Bonjour Docmarti,

Je viens de m'apercevoir que ma réponse du 17/04 n'a pas fonctionné...
Je te la reformule:

En fait, j'ai un userform qui me permet de rentrer plusieurs données dont quantité initiale et quantité NC.
Une fois que j'appui sur "Valider", mes données s'affichent dans un tableau dans l'onglet "Synthese".
Dans ce tableau j'ai une colonne nommée "%NC" et dans laquelle j'ai une formule qui me calcul "((quantité NC/quantité initiale)*100) et moi je veux que quand je fais une nouvelle saisie et que j'appui sur "Valider", mon pgm aille chercher la valeur "%NC" correspondante à cette saisie et si sa valeur est sup à 80% alors il imprime une feuille appelé "FA" sinon, un message box s'affiche pour demander si l'on veut ou non imprimer le feuille "FA".

Est-ce un peu plus clair?

Merci
(Dans le 1er message, il y a mon document en PJ. Il pourra peut être t'aider)
Nimbus
 

Docmarti

XLDnaute Occasionnel
Re : Recherche info dans une feuille vba

Nimbus


Code:
Private Sub Valider_Click()
 ActiveSheet.Unprotect
' Champs obligatoires

    If Client.Text = "" Then
        MsgBox "Le champs Client n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
        Exit Sub
    End If
    
    If Modeles.Text = "" Then
        MsgBox "Le champs Modeles n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
        Exit Sub
    End If
    
    If Qui_Initiales.Text = "" Then
       MsgBox "Le champs Défauts détectés n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
   If Origine.Text = "" Then
       MsgBox "Le champs Origine n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
   'If Localisation.Text = "" Then
       'MsgBox "Le champs Localisation du défaut n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
      ' Exit Sub
   'End If
   
   If N°OF.Text = "" Then
       MsgBox "Le champs N°OF n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
    If Qte.Text = "" Then
       MsgBox "Le champs Qté initiale n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
     If NC.Text = "" Then
       MsgBox "Le champs Qté NC n'a pas été rempli.  Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
     If Defaut.Text = "" Then
       MsgBox "Le champs Description du défaut n'a pas été rempli.  Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
    If Decision.Text = "" Then
       MsgBox "Le champs décision retouche, déchets retour fournisseur n'a pas été rempli.  Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
       Exit Sub
   End If
   
    If N°OF.TextLength <> 15 Then
    MsgBox "Le N°OF n'a pas été rempli correctement. Veuillez le remplir correctement.", vbOKOnly + vbInformation, "Champs incorrects"
     Exit Sub
    End If
      
'Cohérence quantité rentrée

If CInt(NC.Value) > CInt(Qte.Value) Then
    MsgBox "La quantité NC est supérieure à la quantité initiale" & Chr(13) & "Veuiller les modifier et revalider", vbOKOnly + vbCritical, "Qté NC / OF incorrecte"
    Exit Sub
End If
  
  'Affectation des données dans la FA

    With Sheets("FA")
        .Cells(6, 2) = Qui
        .Cells(6, 4).Value = Qui_Initiales
        .Cells(6, 5).Value = Date
        .Cells(24, 2).Value = Date
        .Cells(7, 2).Value = Modeles
        .Cells(7, 7).Value = Qte
        .Cells(8, 2).Value = N°OF
        .Cells(9, 2).Value = Client
        .Cells(9, 7).Value = NC
        .Cells(20, 2).Value = Origine
        .Cells(16, 4).Value = Defaut
        .Cells(12, 2).Value = Qui_Initiales
        '.Cells(16, 1).Value = Commentaire
        '.Cells(19, 1).Value = Decision
    End With

'Affectation des données dans le listing

    With Sheets("Synthese")
        Date_D = Date
        newRecord = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Cells(newRecord, 1) = Date_D
        'Cells(newRecord, 2) = Semaine_D
        .Cells(newRecord, 3) = Qui_Initiales
        .Cells(newRecord, 4) = Qui
        .Cells(newRecord, 5) = Origine
        'Cells(newRecord, 5) = Localisation.Text
        .Cells(newRecord, 6) = Modeles.Text
        'Cells(newRecord, 7) = Coloris.Text
        .Cells(newRecord, 7) = Client.Text
        .Cells(newRecord, 8) = N°OF.Text
        .Cells(newRecord, 9) = Qte.Text
        .Cells(newRecord, 10) = NC.Text
        If Val(NC.Text) <> 0 Then .Cells(newRecord, 11) = Val(NC.Text) / Val(Qte.Text)
        .Cells(newRecord, 12) = Defaut.Text
        .Cells(newRecord, 13) = Commentaire.Text
        .Cells(newRecord, 14) = Decision.Text
        'Cells(newRecord, 15) = resp_retouche.Text
        'Cells(newRecord, 16) = temps_retouche.Text
        'Cells(newRecord, 19) = Origine_defaut

    End With
    
AffichFA = False
If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 Then
       AffichFA = True
ElseIf MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
        AffichFA = True
End If
    
If AffichFA = True Then
  UserForm1.Hide
    Worksheets("FA").PrintPreview
End If


'Suppression des données changeantes à chaque nouvelles saisies

    'Origine.Text = ""
    'N°OF.Text = ""
    'Qte.Text = ""
    NC.Text = ""
    'Defaut.Text = ""
    Commentaire.Text = ""

'Ne ferme pas l'UserForm mais le masque.
    
    UserForm1.Hide
    ActiveSheet.Protect
 End Sub
 
Dernière édition:

Nimbus

XLDnaute Occasionnel
Re : Recherche info dans une feuille vba

Bonjour Docmarti,

il y a une erreur de compilation lorsque je valide : "Bloc If sans End if".

C'est cette ligne qui pose problème:
Code:
If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 Then
        AffichFA = True
 Else
If MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
         AffichFA = True
 End If

Saurai tu m'expliquer ou est l'erreur et comment la résoudre?


Merci
 

Nimbus

XLDnaute Occasionnel
Re : Recherche info dans une feuille vba

Docmarti,

Voila le programme que je viens de modifier:
Code:
If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 Then
        UserForm1.Hide
        Worksheets("FA").PrintPreview
Else
        MsgBox "Voulez vous imprimer une FA?", vbYesNo
End If

If MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
        AffichFA = True
    Else
        AffichFA = False
End If
    
    'Unload UserForm1
    UserForm1.Hide
        
If AffichFA Then
    Worksheets("FA").PrintPreview
End If

Mais, il y a encore un soucis. Quand je valide, et que c'est sup à 80%, il m'affiche bien la FA prête à étre imprimée mais, une fois l'impression lancée, il m'affiche le message box :"Voulez vous imprimer une FA?".

Ou est l'erreur dans mon programme?

Merci
 

Docmarti

XLDnaute Occasionnel
Re : Recherche info dans une feuille vba

Nimbus

Cette syntaxe est correcte. ElseIf est un mot-clé faisant partie du langage VBA:

Code:
AffichFA = False
If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 Then
       AffichFA = True
ElseIf MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
        AffichFA = True
End If
    
If AffichFA = True Then
  UserForm1.Hide
    Worksheets("FA").PrintPreview
End If

Cordialement

Docmarti
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 328
Membres
103 180
dernier inscrit
Vcr