Option Buttons et MsgBox

tsikoudia91

XLDnaute Nouveau
Bonsoir à tous,

Mon boss ayant refusé de me payer une formation VBA ("ben pourquoi ? on trouve tout sur Internet maintenant…") je suis contrainte avec plus ou moins de bonheur de fureter de çi de là, en copiant bêtement des codes qui approcheraient de près ou de loin ma problématique.
J'ai ainsi pu créer des formulaires simples (boutons "command" associés à une macro, par exemple).
Mais copier bêtement, c'est peut-être bien, comprendre ce que je fais, ce serait beaucoup mieux ! :D

Vous l'aurez compris, mon niveau s'apparente à débutant, avec quelques notions.

Mon défi du mois : éditer un modèle de facture selon les options sélectionnées.

J'ai donc créé un classeur Excel, avec une feuille de "Bienvenue" puis chaque feuille comporte un modèle de facture.

A l'ouverture, toutes les feuilles doivent être cachées, sauf "Bienvenue" évidemment où va s'afficher un premier formulaire.
J'avais dans l'idée de définir pour chaque feuille la propriété 0-xlSheetHidden ou 2-xlSheetVeryhidden ou d'utiliser le code suivant :

.ActiveWindow.DisplayWorkbookTabs = False


J'indiquerais ces codes à la toute fin, lorsque les formulaires seront finalisés.


En tout premier lieu, j'ai créé un UserForm1 avec deux groupes d'options

1° Frame1 = choix de la langue dans laquelle va être rédigée la facture
- en français (Option Button = optFR)
- en anglais (OptionButton = optENG)

2° Frame2 = pays de résidence du client
- France (Option Button = optFrance)
- UE (Option Button = optUE)
- Autres (OptionButton = optAutres)

Il y a 6 modèles de facture

Sheet2 = FR_FR = facture en français +client en France
Sheet3 = FR_UE = facture en français +client UE
Sheet4 = FR_Autres = facture en français +client Autres pays

Sheet5 = ENG_France = facture en anglais +client en France (modèle à venir)
Sheet6 = ENG_UE = facture en anglais +client UE (modèle à venir)
Sheet7 = ENG_Autres = facture en anglais + client Autres pays (modèle à venir)

Ce que j'aimerais obtenir, c'est une fois les options sélectionnées (langue + pays), le modèle de la facture correspondante s'affiche.
Pour cela, je voudrais également insérer une MsgBox avec deux boutons "Valider" et "Annuler". Je crois comprendre le code mais je ne sais pas où/comment l'insérer. Dans un module peut-être ? Dans ce cas, comment faire en sorte de la "charger" ? :confused:

Private Sub optFR_Click()
If optFrance.Value = True Then

'MsgBox = Modèle de facture choisi (langue + pays) ici français/France

Select Case MsgBox ("- Facture en français" & Chr(10) & "- Client France", vbOKCancel, "Modèle sélectionné")

Case vbOK
'procédure si click sur Ok
Sheet2.Visible = True
Sheet1.Visible = False
UserForm1.Hide

Case vbCancel
'procédure si click sur Annuler
'vider le formulaire = choix d'un autre modèle
Frame1.ClearContents
Frame2.ClearContents

End Select

End If

End Sub
----------
Voilà pour les deux premiers problèmes.

Troisième problème : tous les champs du formulaire doivent être complétés (utilisation d'une MsgBox… et comme pour le problème n°2 : oui mais où/comment ? :confused:)

MsgBox Texte + icône Exclamation
Select Case MsgBox("Tous les champs doivent être complétés", vbQuestion, "Attention")
End Select
End Sub

----------

Quatrième problème : j'ai fait en sorte que lorsque il y a une remise ou des débours (option button "oui") la case "montant" s'affiche. Comment puis-je faire quand on sélectionne "non" que le montant soit égal à 0 dans le modèle de facture ?

Voici le code utilisé – qui ne fonctionne pas évidemment : :mad:

Private Sub OptRemise_oui_Click()
Label20.Visible = True
TextBox13.Visible = True
End Sub

Private Sub OptRemise_non_Click()
Label20.Visible = False
TextBox13.Visible = False

With Worksheets("FR_FR")
Position = .Range("B25").Value = "0"
'pas de remise -> taux = 0
End With
End Sub

Private Sub OptDebours_oui_Click()
Label21.Visible = True
TextBox14.Visible = True
End Sub

Private Sub OptDebours_non_Click()
Label21.Visible = False
TextBox14.Visible = False

With Worksheets("FR_FR")
Position = .Range("L31").Value = "0"
'pas de débours -> montant = 0
End With
End Sub

----------

Enfin, dernier problème : comment éviter de créer un formulaire pour chaque modèle de facture ? Par exemple, pour le modèle FR_UE, la seule différence avec le modèle FR_FR est le n° de TVA intra-communautaire. Dans ce cas, une fois les options choisies (langue + pays), j'imagine que la textbox TVA devrait s'afficher (oui.. mais comment faire ? :confused:)


J'oubliais : je voudrais que tant que le modèle de facture n'est pas choisi et complété, on ne peut pas sauvegarder le document.

Pour une meilleure compréhension, je joins le document.

Merci d'avance pour toute l'aide que vous voudrez bien m'apporter.

G.
 

Pièces jointes

  • Test Formulaire.xls
    108.5 KB · Affichages: 47
  • Test Formulaire.xls
    108.5 KB · Affichages: 46
  • Test Formulaire.xls
    108.5 KB · Affichages: 47
Dernière édition:

bbb38

XLDnaute Accro
Re : Option Buttons et MsgBox

Bonsoir tsikoudia91, le forum,
Vaste programme.
Mon boss ayant refusé de me payer une formation VBA ("ben pourquoi ? on trouve tout sur Internet maintenant…") je suis contrainte avec plus ou moins de bonheur de fureter de çi de là, en copiant bêtement des codes qui approcheraient de près ou de loin ma problématique.
Le début de ton message ne m’incitait pas à répondre, mais comme j’ai connu une situation identique…. Il y a bien des années….. comme le temps passe….
Enfin, dernier problème : comment éviter de créer un formulaire pour chaque modèle de facture ?
Personnellement, un modèle de facture pour chaque cas ne me dérange pas. Par contre le corps des factures devra être identique, pour les formulaires. Pour commencer, code rectifié pour le choix d’un modèle de facture.
Cordialement,
Bernard
 

Pièces jointes

  • Test Formulaire..xls
    120.5 KB · Affichages: 43

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 955
Membres
103 059
dernier inscrit
gib17