Aide programme vba

Nimbus

XLDnaute Occasionnel
Bonjour,

J'ai un problème avec mon programme vba qui ne réalise pas tout à fait ce que je souhaite.
Ce que je veux:

- Si mon "%NC" est sup à 80% ET que l'opérateur à rentré "Rebut" dans la combobox"Décision retouches, déchets, retour fournisseurs" alors, un msgbox apparait pour demander si l'on veut imprimer une FA ET cette FA est envoyé par mail aux personnes concernées (3 personnes) que l'on réponde "oui" ou "non" à la question du msgbox.

- Si le "%NC" est inf à 80%, alors l'userform se ferme

- C'est uniquement la valeur "Rebut" qui doit générer l'envoie des mails, pour les autres données, seul le msgbox doit apparaître.

Avec ce que j'ai réalisé, le programme envoie tt le temps les mails même, qq soit les données et les quantités...

Voici le code:

Code:
'Condition pour envoyer mail si le %NC est sup à 80%

'AffichFA = False
 If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 And Decision.Value = "Rebut" Then
        ElseIf MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
        UserForm1.Hide
        Worksheets("FA").PrintPreview
End If
        
'Envoi du mail

'Destinataires(1) = "toto@titi.com"
'Destinataires(2) = "titi@toto.com"
Destinataires(3) = "tartempion@toto.com"
Sujet = "FA Plastique"
AccuseReception = True

'Nom de la feuille

ThisWorkbook.Sheets("FA").Copy
ActiveWorkbook.SendMail Destinataires, Sujet, AccuseReception
ActiveWorkbook.Close False
    
If Val(NC.Text) / Val(Qte.Text) * 100 <= 80 Then
 AffichFA = True
End If
 
If AffichFA = True Then
    UserForm1.Hide
 End If

Quelqu'un a une idée pour m'aider??

Merci beaucoup
 

Pièces jointes

  • essai_code_modif_plastique.xlsm
    383 KB · Affichages: 37

camarchepas

XLDnaute Barbatruc
Re : Aide programme vba

Bonjour ,

En modifiant comme cela , ça devrait aller mieux


Code:
Destinataires(1) = "tartempion@toto.com"
Sujet = "FA Plastique"
AccuseReception = True

If Val(NC.Text) / Val(Qte.Text) * 100 <= 80 Then
  'Nom de la feuille
   ThisWorkbook.Sheets("FA").Copy
    ActiveWorkbook.SendMail Destinataires, Sujet, AccuseReception
   ActiveWorkbook.Close False
   AffichFA = True
End If
 
If AffichFA = True Then
    UserForm1.Hide
 End If
 

Nimbus

XLDnaute Occasionnel
Re : Aide programme vba

Bonjour camarchepas,

Merci pour ton aide mais, tout ne fonctionne pas encore comme il faut.
Mon msg box s'affiche après que le mail soit envoyé (donc quand %NC sup à 80%) alors que moi je veux que le msgbox s'affiche que quand %NC est inf à 80%.
Je ne comprends pas ou est l'erreur, peux tu m'aider?

Voici le bout de code:
Code:
Destinataires(1) = "toto@titi.com"
 Sujet = "FA Plastique"
 AccuseReception = True

 If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 And Decision.Value = "Rebut" Then
    'Nom de la feuille
    ThisWorkbook.Sheets("FA").Copy
    ActiveWorkbook.SendMail Destinataires, Sujet, AccuseReception
    ActiveWorkbook.Close False
    AffichFA = True
 End If
  
 If AffichFA = True Then
     UserForm1.Hide
  End If

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

Merci pour ton aide.
J'ai remis le doc en PJ.

Nimbus
 

Pièces jointes

  • essai_code_modif_plastique2.xlsm
    380.9 KB · Affichages: 33

camarchepas

XLDnaute Barbatruc
Re : Aide programme vba

BOnjour ,

et oui regardes cette partie ci :

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

en fait il faut écrire :

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

car le ElseIf signifie sinon alors



Cordialement
 

Nimbus

XLDnaute Occasionnel
Re : Aide programme vba

Oui mais le problème avec ce code c'est qu'il y a un message d'erreur:

Erreur de compilation. Un appel de fonction dans la partie gauche de l'affectation doit renvoyer un Variant ou un objet. Et la ligne
Code:
MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes
est surlignée.


Comprends pas trop... Peux tu encore me venir en aide?

Merci
 

camarchepas

XLDnaute Barbatruc
Re : Aide programme vba

Bonjour ,

Essaies comme cela :

REMPLACES

Code:
 If Val(NC.Text) / Val(Qte.Text) * 100 >= 80 And Decision.Value = "Rebut" Then
     'Nom de la feuille
     ThisWorkbook.Sheets("FA").Copy
     ActiveWorkbook.SendMail Destinataires, Sujet, AccuseReception
     ActiveWorkbook.Close False
     AffichFA = True
  End If
   
 If AffichFA = True Then
      UserForm1.Hide
   End If
 
If Val(NC.Text) / Val(Qte.Text) * 100 <= 80 Then
  ElseIf MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
         UserForm1.Hide
         Worksheets("FA").PrintPreview
 End If


PAR


Code:
 If CLng(NC.Text) / CLng(Qte.Text) * 100 >= 80 And Decision.Value = "Rebut" Then
    'Nom de la feuille
    ThisWorkbook.Sheets("FA").Copy
    ActiveWorkbook.SendMail Destinataires, Sujet, AccuseReception
    ActiveWorkbook.Close False
    AffichFA = True
    UserForm1.Hide
    ElseIf CLng(NC.Text) / CLng(Qte.Text) * 100 <= 80 Then
      If MsgBox("Voulez vous imprimer une FA?", vbYesNo) = vbYes Then
        UserForm1.Hide
        Worksheets("FA").PrintPreview
      End If
 End If
 

Discussions similaires

Réponses
2
Affichages
240

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg