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
C'est bon Regueiro, Grisan et Bebere, tout le forum, je vois. ça marche!

Je voudrais cependant pas paraître désobligeant, mais il a quelques soucis:
1) j'ai vérifié qu'en cas d'erreur de saisie, si j'efface une entrée déjà saisie, il bug et la fenêtre Débogage s'affiche, sortie de la procédure!
2) j'ai omis de rappeler - c'est entièrement de ma faute - que je dois faire enregistrer la date de saisie (date du jour) stockée dans le TextBox et le compteur qui aura été sélectionné dans la liste aux cellules concernées comme ci-après:
upload_2016-12-19_23-10-16.png

Merci beaucoup!
Jeanba
 

Pièces jointes

  • upload_2016-12-19_23-9-32.png
    upload_2016-12-19_23-9-32.png
    10.4 KB · Affichages: 49

Regueiro

XLDnaute Impliqué
Pour le 1er point à vérifier :

VB:
Private Sub txtB_Change()
Dim total As Double
'Initialise la variable à 0
total = 0

     'Boucle de 1 a 13 pour 13 TextBox
    For I = 1 To 13
        'Si un des TextBox est différent de rien alors
        If USF11.Controls("USF11_TextBox" & I) <> "" Then
            USF11.Controls("USF11_TextBox" & I + 13).Value = Format(USF11.Controls("USF11_TextBox" & I).Value * USF11.Controls("USF11_TextBox" & I).Tag, "#,##0.00")
            'Ben le total est le total de tous les TextBox
            total = total + CDbl(USF11.Controls("USF11_TextBox" & I + 13))
        'Fin de la condition

            Else
            USF11.Controls("USF11_TextBox" & I + 13).Value = Null
        End If
    'Fin de la boucle
    Next I
        'Le TextBox "txtTotal" recoit le total
    USF11.txtTotal.Value = Format(total, "#,##0.00")

   
End Sub
 

jeanba

XLDnaute Occasionnel
Regueiro,

Je comprends pas pourquoi tu me renvoies ce code en réponse au point 1er. Car, à l'effet, il est identique à celui de Bebere (post 54) et j'ai confirmé qu'il fonctionnait.
Sauf que si tu as rentré une valeur par erreur et que tu t'en aperçoives qu'après avoir quitté la Textbox concernée, si tu ne mets pas la textBox à zéro mais que tu utilises la touche Suppr ou réduire espace, il bug...
Bon, qu'à cela ne tienne, on va se contenter de mettre zéro ou sélectionner et reécrire dans la TexBox concernée.
Merci bien
 

Regueiro

XLDnaute Impliqué
VB:
Private Sub txtB_Change()
Dim total As Double
'Initialise la variable à 0
total = 0
    For I = 1 To 13
        'Si un des TextBox est différent de rien alors
        If USF11.Controls("USF11_TextBox" & I) <> "" Then
            USF11.Controls("USF11_TextBox" & I + 13).Value = Format(USF11.Controls("USF11_TextBox" & I).Value * a(I), "#,##0.00")
            'Ben le total est le total de tous les TextBox
            total = total + CDbl(USF11.Controls("USF11_TextBox" & I + 13))
        'Fin de la condition

            Else
            USF11.Controls("USF11_TextBox" & I + 13).Value = Null
        End If
    'Fin de la boucle
    Next I
        'Le TextBox "txtTotal" recoit le total
    USF11.txtTotal.Value = Format(total, "#,##0.00")
End Sub

VB:
Sub EnregistrerInventaire()
Dim I As Integer
Dim colonne As Integer
Dim R As Range
    With ActiveSheet
        Set R = .Rows(7).Find(USF11.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
        ActiveSheet.Cells(7 + I, colonne).Value = USF11.Controls("USF11_TextBox" & I).Value
   Next I
      [COLOR=#ff4d4d]     ActiveSheet.Cells(22, colonne).Value = USF11.USF11_ComboBox3.Value
           ActiveSheet.Cells(23, colonne).Value = Date[/COLOR]

End Sub
bonne soirée
 

Bebere

XLDnaute Barbatruc
bonjour
code à tester
Code:
Private Sub txtB_Change()
    Dim total As Double, i As Byte
    'Initialise la variable à 0
    'total = 0
    If USF11.TboTotal.Value <> "" Then total = USF11.TboTotal.Value Else total = 0
    i = Mid(txtB.Name, 14)
    If Not IsNumeric(txtB.Tag) Then
        USF11.Controls("USF11_TextBox" & i + 13).Value = Format(txtB.Value * a(i - 1), "#,##0.00")
        total = total + (txtB.Value * a(i - 1))
        txtB.Tag = txtB.Value
    Else
        If txtB.Tag <> txtB.Value Then
            total = total - (txtB.Tag * a(i - 1))
            total = total + (txtB.Value * a(i - 1))
            USF11.Controls("USF11_TextBox" & i + 13).Value = Format(txtB.Value * a(i - 1), "#,##0.00")
        End If
    End If
    'Le TextBox "txtTotal" recoit le total
    USF11.TboTotal.Value = Format(total, "#,##0.00")
End Sub

Private Sub txtB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii
    Case Is < 48, Is > 57
        KeyAscii = 0
    End Select

End Sub
 

jeanba

XLDnaute Occasionnel
Bonjour Bebere,
J'ai de gros soucis de connexion, d'où mes retours très longs..
J'ai testé ton code, il y a un problème 1) dans le totalisateur 2) il plante lorsqu'il s'agit d'effacer une entrée erronée.

Grisan,
J'espère que tu as pu régler ton souci... En tout cas, chez moi le code de Regueiro fonctionne pas mal, même celui de Bebere (post54)
...
Jeanba
 

grisan29

XLDnaute Accro
bonjour a tous
avec le dernier code de Bebère c'est beaucoup mieux le calcul se fait bien , mais je comprends pas pour le résultat, j'ai mis le textbox
"TboTotal" sous le "txtTotal" pour vous montrer
 

Pièces jointes

  • comptage bug.jpg
    comptage bug.jpg
    105.7 KB · Affichages: 42

Si...

XLDnaute Barbatruc
Salut et restons Zen ;)

Renommer les contrôles, oui mais, tant qu’à faire, il est souvent intéressant de choisir des noms de façon à simplifier les macros.
D’habitude j’utilise le numéro des colonnes des cellules impactées (C1, C2, …) . Dans le fichier joint j’innove : AX, AY, BX, BY … (initiale+lettre quand il n’y en a pas une centaine*, voire plus).

Je donne aussi l’exemple de traitement à moindre feuilles* et sans « Userform » (sujet à problème dans cette discussion).

*la multiplicité engendre toujours des cas supplémentaires à examiner
 

Pièces jointes

  • Billetage V04.xlsm
    56.9 KB · Affichages: 99
  • Onglet De Saisies.xlsm
    43.1 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 802
Membres
102 981
dernier inscrit
fred02v