Exercice N°3 - Partie 2 (ScrollBar Remise)


#1

Bonjour,
Ci-joint la 2ème partie
Elle contient la correction de la partie 1 (pour les Tarifs).
Maintenant, créez cet UserForm comme le modèle .
Programmez-le afin de pouvoir Sauvegarder sur la feuille Base, les renseignements
saisis . Commencer Progressivement, en créant d’abord l’UserForm
Puis en initialisant le TextBox du Nom en Nom Propre, le Combobox de Destination et le Prix à payer
pour seulement la 1ère classe. Allons-y par palier
Attribuez par macro le lancement aux Boutons présents sur les deux onglets

Exercice N°3 - Partie 2.xlsm (50,7 Ko)

Pour info, cet exercice est tiré d’un tuto de l’excellent Joël GARBE, mais qui l’à présenter sous forme de formulaire sur feuille (non sur USF) et avec des formules de calculs (non en VBA), mais, cela peut aider!!


#2

Pour Stéphanie :heart_eyes:

Sur le classeur joint, créer un nouveau USF ressemblant au modèle (il y aura donc 2 USF, celui pour les TARIFS que vous avez déjà établi, et celui-ci)
Pour le moment, effectuez juste une macro pour :

  • Initialiser dans l’USF le combobox avec les DESTINATIONS de la feuille TARIFS
  • Renseigner le prix à payer avec le prix de 1er classe suivant la Destination dans le Label “Prix à Payer”
  • Renseigner la feuille BASE, avec le TextBox du Nom en Nom Propre, la Destination et le prix à payer

Le reste se fera au fur et à mesure, sauf si vous vous sentez et vous voulez vous lancer

Le Tuto de YouTube provient du concepteur Joël GARBE (qui à d’ailleurs un site perso très bien fait http://garbe.joel.free.fr/ ) .
Lui avait effectué la même conception mais avec des contrôles sur feuille et formule de calcul, vous pouvez donc vous en aider pour me transformer tout en VBA.


#3

Re, @Mimimathy

question peut-on ce servir de l’enregistreur de macro avec un "Private sub"

Cdlt

@kiss6


#4

Re,

Tu peux l’utiliser par exemple pour qu’il te fasse la macro, et à toi ensuite la mettre en place dans ton montage
car l’enregistrement, c’est du brut de brut


#5

Re,

MERCI

C’est ce que je pensais faire

Cdlt

@kiss6


#6

Re, @Mimimathy

Suis-je bien parti ou pas :exploding_head:

Option Explicit
Dim Dl%
Private Sub BSauvegarde_Click()
If TextBox1.Value = “” Then
MsgBox " Vous devez remplir un NOM !!! "
End If
Dl = Range(“A” & Rows.Count).End(xlUp).Row + 1
Sheets(“Base”).Range(“A” & Dl) = TextBox1.Value
Unload Me
End Sub

le fichier en retour

====> Exercice N°3 - Partie 2.xlsm (56,9 Ko)

Cdlt

@kiss6


#7

Re,

Tu es bien parti :+1:
Je t’ai rajouté deux petites lignes
Une qui replace le curseur sur le TextBox pour le renseigner
l’autre pour sortir de la macro, sans fermer l’USF

Option Explicit
Dim Dl%
Private Sub BSauvegarde_Click()
  If TextBox1.Value = "" Then 'Si le Textbox1 est vide
    MsgBox " Vous devez remplir un NOM !!! " 'j'affiche un message
    TextBox1.SetFocus 'je replace le focus (curseur)sur le Textbox1 qui est vide
    Exit Sub 'Je sort de la macro 'Private Sub BSauvegarde_Click()) pour inscrire le Nom
  End If
  Dl = Range("A" & Rows.Count).End(xlUp).Row + 1
  Sheets("Base").Range("A" & Dl) = TextBox1.Value
  Unload Me
End Sub
Private Sub CommandButton2_Click()
  Unload Me
End Sub

Reste plus qu’à renseigner le Combobox avec les données des Tarifs (Désignation) et le Label pour afficher le prix


#8

Re, @Mimimathy

Merci

je cherche pour la liste déroulante maintenant :crazy_face:

Cdlt

@kiss6


#9

Re,

J’ai fait la Combobox pour les destination mais je n’ais plus les noms pourquoi ???:tired_face:

le fichier en retour

====>Exercice N°3 - Partie 2.xlsm (58,4 Ko)

Cdlt

@kiss6


#10

Re,

C’est bon j’ais trouvé l’erreur

@kiss6


#11

Re,

Stop là, tout à côté
le ComboBox doit être initialisé dans l’USF à son ouverture
Càd que quand l’USF s’ouvre, toutes les destinations doivent être en mémoire dans le Combobox
Donc on recherche bien la Dl (pour toi Di) de la feuille Tarifs
et on incrémente les destinations (ITEM) dans une boucle for / Next

par ex:
With la feuille 1 pour la recherche
je cherche la Di de la colonne A
pour une boucle allant de 2 à la Di avec For
dans le combobox j’ajoute les items de la cellule (Di pour la ligne, 1 pour la colonne A)
Next pour la fin de boucle
End with pour fermer le With

ensuite, il suffit de rentrer depuis le bouton de validation, à la suite du remplissage de nom de mettre la valeur qui se trouvera dans le combobox dans la cellule de la même ligne sur la colonne B

Pour le tarif en 1ère classe, ce sera la même ligne avec un décalage d’une seule colonne (Offset)


#12

Re, @Mimimathy

Mais il nous faut quand même définir dans le gestionnaire de nom la liste ou pas

@kiss6


#13

Bonjour Kiss,
Non, pas la peine


#14

Bonjour toutes et tous,
Salut @Mimimathy, @kiss6,

J’ai suivi les progrès de @kiss6 :clap: et j’ai essayé d’avancer un peu, mais je ne progresse plus !

Je n’explique pas en détail tout ici, mais avec le ComboBox je recherche dans la liste “Destination”, bref je n’ais pas su mettre en œuvre la recherche avec une boucle With

Maintenant, je voudrai que si le ComboBox n’est pas vide et que l’OptionButton1 est sélectionné alors rechercher dans la liste Classe1 et afficher la résultat dans le Label “Classe1” ou si le ComboBox n’est pas vide et que l’OptionButton2 est sélectionné alors rechercher dans la liste Classe2 et afficher le résultat dans le Label “Classe2”.

Donc voilà, je pense que j’ai le bon raisonnement, mais bien sûr, je n’arrive pas a le mettre en œuvre.

@Mimimathy, un p’tit coup de pouce pour nous faire avancer le bouchon :pleading_face:

Fichier ICI==> Exercice N°3 - Partie 2 VEssai.xlsm (62,5 Ko)

@+


#15

Re,

Bonjour a toutes et tous

Bien @mdo100 pour la destination :+1: j’ais galéré avec cette sacre liste déroulante et pour moi c’est pareil je ne

suis pas arrive a utiliser la boucle with

Il faut dire quand ce moment je n’ais pas beaucoup le temps la semaine mais dès que je peut venir sur le

forum je le fais

Et pour @Mimimathy c’est vrais @mdo100 n’a pas tord un petit coup de main pour faire avancer

LE CHI , LE CHIMI , LE CHIMILI , LE CHIMILIBLIC :wink:

Cdlt

@kiss6


#16

Re @kiss6,

Week-end difficile pour moi :fearful:
Je viens de faire ça pour le trajet:

Private Sub CheckBox1_Click()
'Si case à cocher Trajet vrai et ComboBox diff de vide alors aller / retour
If CheckBox1.Value = True And ComboBox1 <> "" Then
LTrajet = "Aller / Retour"
 'Sinon
 Else
'Si case à cocher Trajet faux et ComboBox diff de vide alors aller
If CheckBox1.Value = False And ComboBox1 <> "" Then
LTrajet = "Aller"
End If
End If
End Sub

Mais ce n’est pas encore ça qu’est ça.

Fichier ==> Exercice N°3 - Partie 2 VEssaiV1.xlsm (65,0 Ko)

Cdlt


#17

Bonsoir les “Acros” du VBA :grin:

Bon MDO, tu m’as épaté avec ton initialisation du combobox (Je ne connaissais pas dans ce genre) :+1:
(A savoir que dans cette correction, je vous mettrai une feuille COMPLEMENT avec les differentes façon de procéder)
Après, vous vous cassez la tête pour la 1ere ou 2eme classe,
Dans ma demande, pour l’instant, ne vous occupez pas des Classes (on y va “molo”)
je veux simplement que l’on retrouve la ligne qui donne la Destination et avec un décalage (Offset en VBA) on applique le montant dans l’USF et ensuite dans la Base

Donc soit avec un Equiv (Match en VBA) ou par FIND
Fouinez un peu sur GOGOL, c’est assez simple.
Et surtout, noubliez pas que la touche F1 est capable aussi de vous aider par des exemple de Microsoft, aussi bien sur Excel que VBA
On tape un début de fonction, on clique sur la fonction, F1 et on étudie l’aide
Je vous laisse pour cette nuit, demain à 6h00, je mets en ligne la réponse, et vous aurez perdu ma gratitude :joy:

Au Taf


#18

Bonjour à tous,
Voici donc le classeur avec la solution pour le ComboBox et l’affichage du Prix à payer

Maintenant, suivant le choix des 2 OptionButton, il faut renseigner, suivant la Classe
cochée, le bon Prix à payer dans le Label, ainsi que dans la Base
Afficher aussi dans la colonne C de la Base 1° Classe ou 2° Classe

  • Initialiser le bouton option 2°classe afin qu’il soit coché à l’ouverture
  • Créer une macro Calcul qui servira à récupérer les valeurs des différentes variables (1° ou 2° classe) pour l’instant et d’effectuer le calcul et l’affichage du prix à payer, et ce à chaque changement des différents contrôles

Exercice N°3 - Partie 2.xlsm (63,7 Ko)


#19

Bonjour les gens,
Salut @Mimimathy, :wink:

C’est pas bien de se moquer

Bon j’ai un peu progressé, Mais…
J’ai truandé pour le calcul du “Prix Total” :open_mouth:

Et je n’arrive pas a faire les calculs pour la “Remise” et pour “Aller”, "Aller / Retour :triumph:

Je te propose de jeter un :eye: sur le fichier et de me guider un pas de plus vers la solution.

Exercice N°3 - Partie 2 VMimimathy.xlsm (69,7 Ko)

@+


#20

Salut MDO

Tu va trop vite, je demande simplement de gérer les options boutons, laisse le reste en suspend et concentre toi sur les 2 options de classe
(Je t’ai remis ton classeur sans mes demandes de Spin, Scroolbar et Chekbox)

Exercice N°3 - Partie 2 VMimimathy.xlsm (62,3 Ko)

Le fait de faire 2 macros pour les options :+1:

Par contre

Private Sub OB1_Change()
 If OB1.Value = True And OB2.Value = False Then 'Si OB1 cocher et OB2 non cochet
  LClasse = "1° Classe" 'Alors mettre dans LClasse 1°Classe
 Else 'Sinon
  LClasse = ""
 End If
End Sub

Private Sub OB1_Click() serait mieux

L’ajout And OB2.Value = False pas besoin, c’est une option, si c’est pas un c’est l’autre

Ceci également
Else 'Sinon
LClasse = ""

Idem pour l’autre bouton

Et je n’ai pas demandé d’ajouter un label pour savoir la classe, la classe c’est celle qui est cochée, d’où le fait
qu’un des 2 boutons soit coché à l’ouverture de l’USF, soit par un ajout dans userform initialize, soit dans les propriétés (on va dire 2° classe coché à l’ouverture)

Ensuite, comme on connait la “LigneDestination” (N° de la ligne dans Tarifs pour la Destination), il suffit d’inscrire dans le label du prix, sur la formule déjà existante, le bon tarif qui se trouve soit en colonne 2 ou 3 , et son report sur l’appui de la sauvegarde

Mais je vois que tu as déjà jeté un :eye: sur les propriétés des contrôles :+1: cela donnera de l’avance pour la suite :yum: