Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Erreur Code VBA

jeanba

XLDnaute Occasionnel
Bonjour,

Mon code ci-dessous renvoie une erreur de genre


Quelqu'un peut à vue de nez me dire ce qui va pas... ?

Merci par avance
Jeanba


Code:
Public WithEvents txtB As MSForms.TextBox
Private Sub txtB_Change()
Application.ScreenUpdating = False
Dim Total As Double
'Initialise la variable à 0
Total = 0

'Boucle de 1 a 13 pour 13 TextBox
   For i = 100 To 112
        'Si un des TextBox est différent de rien alors
       If Me.Controls("TextBox" & i) <> "" Then
            Me.Controls("TextBox" & i + 13).Value = _
            Format(Me.Controls("TextBox" & i).Value * _
            Me.Controls("TextBox" & i).Tag, "#,##")
            'Ben le total est le total de tous les TextBox
           Total = Total + CDbl(Me.Controls("TextBox" & i + 13))
        'Fin de la condition
            Else
            Me.Controls("TextBox" & i + 13).Value = Null
        End If
    'Fin de la boucle
   Next i
        'Le TextBox "txtTotal" recoit le total
   Me.TboTotal.Value = Format(Total, "#,##")
Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce qui ne va pas c'est qu'il y a un membre de méthode ou de données spécifié qui n'existe pas.
Par exemple il n'existerait aucun contrôle nommé TboTotal dans l'objet associé au module.
 

jeanba

XLDnaute Occasionnel
Salut Dranreb,

Toujours fidèle au poste mon vieux!

Regarde les zones qu'il surligne..



Et à tout hazard, j'envoie le code de l'usf_initializ

VB:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = 1
End Sub
Private Sub UserForm_Initialize()
Dim n As Long
TextBox1.Value = [proprio_intellect].Value
    For n = 100 To 112
        Set txtB(n).txtB = Controls("TextBox" & n)
    Next n
    For i = 113 To 125
        Me.Controls("TextBox" & i).Enabled = True
    Next
End Sub
 

Dranreb

XLDnaute Barbatruc
De fait la 1ère instruction Public WithEvents txtB as Msforms.TextBox du module incriminé ainsi que la Set txtB(n).txtB = Controls("TextBox" & n) de l'UserForm_Initialize m’incitent fortement à penser que l'objet qui lui est associé serait plutôt un exemplaire d'objet d'un type défini par un module de classe du même nom, et qui ne possède donc pas de collection Controls.
 

jeanba

XLDnaute Occasionnel
Humm humm
Ton petit programme est super, mais trop complexe pour moi le debutant..
J'envoie ci-joint mon projet..

Merci par avance
 

Pièces jointes

  • Calculs de Textbox dans Frame.xlsm
    31.3 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
Tant pis.
Pourtant la programmation de l'UserForm était très courte.
Qu'est ce que tu ne comprends pas ?
Je le joins avec des commentaires explicatifs dans l'objet CollectionTBxNum
 

Pièces jointes

  • Temp.xlsm
    28.3 KB · Affichages: 31

jeanba

XLDnaute Occasionnel
Bonjour Dranreb,

Je te remercie.
J'ai réussi à intégrer ton code et ça marche super bien.

Cependant (et c'est pas de ta faute), ce n'est pas seulement ce que je voulais que fasse le programme.
Il s'agissait à la base de faire une sorte de "SOMMEPROD" des valeurs de mes textbox de USF18_1 à 13 (1ere matrice) et USF18_14 à 26 (2e matrice).
Et, en intégrant ton code, il disparaît les calculs et la somme totale...(voir ci-joint). Et j'avoue que je suis vite déstabilisé d'un code sort des sentiers battus..

Mais, je me souviens d'avoir soumis un tel souci au forum il y a de cela quelques temps. Je vais fouiller et certainement trouver quelque chose qui colle..

Merci encore et bon dimanche!
 

Pièces jointes

  • Calculs de Textbox dans Frame.xlsm
    33.3 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
Bonjour.
Comme ça alors si j'ai bien compris :
VB:
Option Explicit
Private WithEvents ClnTBxNum As CollectionTBxNum
Private Sub UserForm_Initialize()
   Dim N As Long
   Set ClnTBxNum = New CollectionTBxNum
   For N = 1 To 13
      ClnTBxNum.Add Me("USF18_TextBox" & N): Next N
   TboTotal18.Text = "0"
   End Sub
Private Sub ClnTBxNum_Change(ByVal TBx As MSForms.TextBox)
   Dim N As Long, Valeur As Double, Somme As Double
   For N = 1 To 13
      Valeur = ClnTBxNum.Value(N) * Choose(N, 10000, 5000, 2000, 1000, 500, 500, 100, 50, 25, 10, 5, 2, 1)
      Me("USF18_TextBox" & N + 13).Text = Format(Valeur, "### ### ##0")
      Somme = Somme + Valeur: Next N
   TboTotal18.Text = Format(Somme, "### ### ##0")
   End Sub
Mais pourquoi avoir mis des TextBox plutôt que des Label pour des valeurs non modifiables par l'utilisateur ?
 

jeanba

XLDnaute Occasionnel
Trop fort ce Dranreb!
Excellent!
Merci

Mais pourquoi avoir mis des TextBox plutôt que des Label pour des valeurs non modifiables par l'utilisateur ?
Bonne question! Réponse: Erreur de débutant, voilà tout!
Maintenant je le sais..
Thanks

Je joins un fichier de même nature de souci (code de débutant lourd et avec sans doute des erreurs d'amateur.. Voir ci-joint..)

Toujours merci par avance..
 

Pièces jointes

  • Formulaire avec tri.zip
    827.8 KB · Affichages: 31

jeanba

XLDnaute Occasionnel
Oui, j'ai corrigé cela dans la version après envoi.
Mais, à part cela, le temps d'exécution est trop long et ça fait pas toutes les actions que je souhaite voir faire les boutons qui figurent sur les 2 usf...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…