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

Regueiro

XLDnaute Impliqué
Bonsoir LE Forum - jeanba
Voici ton fichier en retour avec quelques codes à compléter

Dans le Userform :
VB:
Dim txtB(1 To 13) As New Classe1 'Pour 13 TextBox

Private Sub UserForm_Initialize()
Dim DateInv As Range
Dim CodeCaisse As Range
Dim Responsables As Range
Dim n As Long

With Sheets("Parametres")
    Set DateInv = .Range("C2:C13")
    Set CodeCaisse = .Range("A2:A6")
    Set Responsables = .Range("B2:B6")
   
End With
Me.USF11_ComboBox1.List = CodeCaisse.Value
Me.USF11_ComboBox2.List = DateInv.Value
Me.USF11_ComboBox3.List = Responsables.Value
    For n = 1 To 13
        Set txtB(n).txtB = Controls("USF11_TextBox" & n)
    Next n


End Sub
Private Sub USF11_ComboBox1_Change()
Me.TextBox16.Value = Me.USF11_ComboBox1.Value
End Sub
Private Sub USF11_ComboBox2_Change()
Me.TextBox17.Value = Me.USF11_ComboBox2.Value
End Sub

Dans le module de Classe :
VB:
Public WithEvents txtB As MSForms.TextBox

Private Sub txtB_Change()
     'Boucle de 1 a 13 pour 13 TextBox
    For i = 1 To 13
        'Si un des TextBox est différent de rien alors
        If UserForm1.Controls("USF11_TextBox" & i) <> "" Then
            UserForm1.Controls("USF11_TextBox" & i + 13).Value = Format(UserForm1.Controls("USF11_TextBox" & i).Value * UserForm1.Controls("USF11_TextBox" & i).Tag, "#,##0.00")
            Else
            UserForm1.Controls("USF11_TextBox" & i + 13).Value = Null
        End If
    'Fin de la boucle
    Next i
End Sub

Bode Soirée
 

Pièces jointes

  • XLD Billetage V01.xlsm
    50.4 KB · Affichages: 68

Regueiro

XLDnaute Impliqué
Bonsoir le Forum, Grisan et Jeanba
Grisan en effet ce sont de grosses coupures je pense des FCFA
Notre ami nous en dira plus s'il revient un jour ?
@+


upload_2016-12-14_21-13-24.png
 

jeanba

XLDnaute Occasionnel
Bonsoir Regueiro,

Je réagis peut-être avec du retard, car je désespérais déjà ...
Merci de ta réponse!!
Je suis stupéfait déjà par le travail abattu! Merci infiniment!
Il reste que le bouton de commande "Enregistrer" n'agit pas. Mais ça, je peux essayer, grâce aux recherches, trouver une solution...
Merci encore!

Si tu arrives avant moi à faire en sorte que la saisie puisse se faire dans les feuilles appropriées en fonction de la caisse sélectionnée, n'hésite pas à me faire signe.

Je n'ai pas de mot pour te dire ma gratitude pour ce que tu as déjà fait tu sais?

Jeanba
 

jeanba

XLDnaute Occasionnel
En ce qui concerne les coupures, oui, l'application est pour une structure située en zone CFA...
Alors, tremblez pas les amis!
Aucun candidat à la présidentielle n'a encore introduit - pas même Mélenchon - l'idée d'un billet de 10.000€...
 

jeanba

XLDnaute Occasionnel
Regueiro,

En fait, à chaque caisse sélectionnée correspond une feuille précise:
CP = Feuille "Billetage CP"
CM = Feuille "Billetage Monnaie"
C01 = Feuille "Billetage 01"
C02 = Feuille 'Billetage 02"
C03 = Feuille "Billetage 03"

De même, les dates d'inventaire se trouvent dans chacune de ces feuilles.
Ainsi, si l'user sélectionne Caisse CP + date d'inventaire "31/01/2016", automatiquement, les données à saisir vont être enregistrées dans la feuille "Billetage CP", colonne D, plage "D8:D20"....
J'espère que c'est assez clair pour toi...
 

jeanba

XLDnaute Occasionnel
J'ai bien pensé utiliser SELECT CASE mais, il faut arriver à imbriquer les SELECT CASE suivant le choix de la liste des caisses ET AUSSI de la date d'inventaire.
Sous excel, je sais gérer cette situation car elle relève des fonctions matricielles. Mais, comment traduire cela en VBA???
 

Regueiro

XLDnaute Impliqué
Re
Voici ton fichier en retour à compléter pour les autres case :

VB:
Private Sub USF11_CommandButton3_Click()
'Bouton enregistrer
Dim i As Integer
Select Case UCase(Me.USF11_ComboBox1.Value)
    Case Is = "CP": Sheets("Billetage CP").Activate
        With ActiveSheet
            Set R = .Rows(7).Find(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
                    For i = 1 To 13
                        .Cells(7 + i, colonne).Value = Controls("USF11_TextBox" & i).Value
                    Next i
                    End If
        End With
Case Is = "CM": Sheets("Billetage Monnaie").Activate
End Select
End Sub
Je cherche encore à simplifier le code, je reviens
Tu choisis dans tes feuilles l'Année ainsi chaque fin de mois automatique.
@+
 

Pièces jointes

  • XLD Billetage V01.xlsm
    60 KB · Affichages: 47

Regueiro

XLDnaute Impliqué
Re
Voici ton fichier
VB:
Private Sub USF11_CommandButton3_Click()
'Bouton enregistrer
Select Case UCase(Me.USF11_ComboBox1.Value)
  Case Is = "CP": Sheets("Billetage CP").Activate
        enregistrer
Case Is = "CM": Sheets("Billetage Monnaie").Activate
        enregistrer
End Select
End Sub

Code:
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
        ActiveSheet.Cells(7 + i, colonne).Value = UserForm1.Controls("USF11_TextBox" & i).Value
   Next i
End Sub

Bonne soirée à demain
 

Pièces jointes

  • XLD Billetage V01.xlsm
    59.7 KB · Affichages: 47

Discussions similaires

Réponses
3
Affichages
439

Statistiques des forums

Discussions
312 855
Messages
2 092 852
Membres
105 544
dernier inscrit
Eden90