XL 2010 ComboBox, TextBox...Là c'est du costeaud pour moi...SOS

jeanba

XLDnaute Occasionnel
Bonjour à tous,

Je suis toujours dans mon projet, vu que le webmaster n'a pas répondu à ma demande ...
Alors, j'ai tâtonné jusqu'ici avec l'aide des uns et des autres. Mais, j'arrive à un autre niveau je crois.

Voici le problème:

1 - Je dois saisir les données dans un USF et les stocquer dans les feuilles concernées en fonction de l'ID caisse sélectionnée ET du mois d'inventaire...
Par exemple, si je saisis les données de la Caisse CP:

a) je dois pouvoir sélectionner sur 3 listes ComboBox de mon USF 3 choses:
a1) La liste des Caisses (USF11_ComboBox1) et le résultat de ma sélection apparaître en USF11_16, juste à côté sur l'USF)
a2) La liste des dates d'inventaire (USF11_ComboBox2
a3) La liste des compteurs autorisés (en l'occurences les responsables de caisses) en ComboBox 3 et la date du jour de la saisie apparaître en bas à gauche en TextBox17

b) lorsque je cliquerai sur Enregistrer, je dois raffaîchir la feuille "Billetage CP" et "Ranger" les données saisies dans la colonne N, précisément, la plage N8:N20


c) en saisie des données d'inventaire, après avoir rentré le nombre d'unités comptées, le montant appraît sur chaque ligne concernées dans des TextBox14 à 26 (En effet, puisqu'en Quittant l'USF, on ne devrait plus modifier ces données, je prévois donc que sur mon USF, l'user puisse contrôler que les chiffres qu'il rentre au fur et à mesure sont bien correctes, grâce aux résultats qui apparaissent en saisie dans la colonne "Montant" de l'USF)


2- Bouton ENREGISTRER
En cliquant sur Enregistrer, je RANGE les données saisie dans la feuille appropriée, mais les données sont encore modifiables.

3- Bouton QUITTER
Il ne fait pas qu'un Unload classique. Il verrouille également les cellulles qui ont reçu les données saisies et en interdit la modif.

Voilà en gros mon gros souci qui m'occupe l'esprit depuis des jours.
J'ai tenté de baragouiner un code pour afficher les listes des ComboBox tel que lu ci et là, mais ça fonctionne pas..

Alors, je viens à vous, ma communauté XLNaute qui me fait tant de bien! Biensûr, le fichier est joint...

Merci par avance!
Jeanba
 

Pièces jointes

  • Billetage.xlsm
    41.5 KB · Affichages: 74

jeanba

XLDnaute Occasionnel
Voici ce que dit Microsoft sur son site à propos de l'erreur 13. Au cas où quelqu'un y comprendrait plus vite quelque chose...

upload_2016-12-16_21-13-42.png
 

Regueiro

XLDnaute Impliqué
Bonsoir
Pour répondre a tes 2 remarques précédentes
VB:
Sub enregistrer()
Dim i As Integer
Dim colonne As Integer
Dim R As Range
    With ActiveSheet
        Set R = .Rows(7).Find(UserForm1.USF11_ComboBox2, , xlValues, xlWhole) 'définit la recherche R (arguments à adapter)
            If R Is Nothing Then 'condition : si aucune occurrence trouvée
                MsgBox "Inexistant" 'message
                Else 'sinon
                colonne = R.Column
                MsgBox colonne
            End If
      End With
       For i = 1 To 13
        With ActiveSheet.Cells(7 + i, colonne)
        .Value = UserForm1.Controls("USF11_TextBox" & i).Value
        .Locked = True
        .FormulaHidden = True
    End With
    Next i
        ActiveSheet.Cells(22, colonne).Value = UserForm1.USF11_ComboBox3.Value
        ActiveSheet.Protect Password:="0000" 'pour verrouiller
End Sub

VB:
Private Sub USF11_CommandButton1_Click()
'Bouton remise a zéro des Textbox 1 a 13
If MsgBox("Etes-vous certain de vouloir supprimer le contenu des Textbox 1 a 13", vbYesNo, "Demande de confirmation") = vbYes Then
        'Boucle de 1 a 13 pour 13 TextBox
    For i = 1 To 13
Me.Controls("USF11_TextBox" & i).Value = ""
Next i
        MsgBox "Le contenu des Textbox a été effacé !"
    End If
End Sub
 

jeanba

XLDnaute Occasionnel
Bonjour Regueiro,

Désolé, hier soir je me suis assoupi devant le clavier, poids de la semaine sûrement...
Merci pour la réponse aux précédentes remarques.

Pour le problème actuel (les calculs qui ne se font pas lorsque je reproduits ton code dans mon projet final), renvoyer le fichier oui, mais il ne servira à rien, car il fonctionne très bien dans le fichier exemple.
Enfin, puisque tu le demande, je te le renvoie...

A bientôt!
Jeanba
 

Pièces jointes

  • XLD Billetage V02.xlsm
    53.6 KB · Affichages: 39

Bebere

XLDnaute Barbatruc
bonjour à tous
peut être le tag qui dérange ou ajouter .value

Code:
Private Sub txtB_Change()
    Dim total As Double, valeur As Double
  
    'Initialise la variable à 0
    'total = 0
    If UserForm1.txtTotal.Value <> "" Then total = UserForm1.txtTotal.Value Else total = 0
    i = Mid(txtB.Name, 14)
    valeur = UserForm1.Controls("USF11_TextBox" & i).Tag
    UserForm1.Controls("USF11_TextBox" & i + 13).Value = Format(txtB.Value * valeur, "#,##0.00")
    total = total + UserForm1.Controls("USF11_TextBox" & i + 13).Value
    'Le TextBox "txtTotal" recoit le total
    UserForm1.txtTotal.Value = Format(total, "#,##0.00")

End Sub

pour enregistrer
Code:
Sub enregistrer()
    Dim i As Long    ' Integer
    Dim colonne As Long 'Integer

    colonne = UserForm1.USF11_ComboBox2.ListIndex + 4
    With ActiveSheet
        For i = 1 To 13
            .Cells(7 + i, colonne).Value = UserForm1.Controls("USF11_TextBox" & i).Value
        Next i
    End With
  
End Sub
integer est changé en long lors de l'exécution
 

jeanba

XLDnaute Occasionnel
Bonjour Bebere,

Tu préconises donc d'enlever le ".Tag" à la fin de l'instruction ?
valeur = UserForm1.Controls("USF11_TextBox" & i).Tag

pourtant, cette ligne ne renvoie pas d'erreur mais celle d'après, que ce soit dans ton code ou celui de Regueiro...
 

jeanba

XLDnaute Occasionnel
En plus Bebere, la fonction Enregsitrer s'exécute très bien.
L'enregsitrement se fait bien dans les cellules appropriées.
Mon seul souci aujourd'hui est que les calculs ne se font pas (d'abord ligne par ligne et ensuite le total en fin d'USF)
 

jeanba

XLDnaute Occasionnel
Le code étant fonctionnel dans le fichier exemple, j'en déduis que c'est dans mon projet définitif qu'il faut rechercher l'explication.
Mais, à quel niveau si j'ai fait un copier/coller et aux bons emplacements (module , module de classe, usf...)?
 

jeanba

XLDnaute Occasionnel
Il peut aussi être intéressant de noter qu'en cours d'exécution, la fenêtre de Débogage s'affiche dès que je veux taper une valeur dans un des 13 TextBox, comme si leur accès en était interdit....
Mais, dès que j'active laligne de Code "On Error Resume Next", là je peux rentrer les données et curieusement, les calculs ne se font pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 181
Membres
102 808
dernier inscrit
guo