Problème fonctionnement du Code

Résolu/Fermé
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014 - 26 avril 2014 à 11:26
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014 - 28 avril 2014 à 18:30
Bonjour,

J'ai testé un code vba qui fonctionne bien avec 24 textbox sur un fichier excel.

Mais lorsque j'essaye de le reporter sur l'application sur laquelle je travaille et qui comprend 280 textbox concernées par le code, celui-ci ne fonctionne plus.

J'ai tout vérifié, mais je ne trouve pas la solution (je suis débutante)

Quelqu'un pourrait-il m'aider ?

Je joins les deux fichiers et voici le code,

Dim i As Long
Dim n As Long
Dim nbVirgule As Long
Dim nbPoint As Long

'Empêcher de saisir du texte et avertir d'une mauvaise saisie (lien avec module de classe)

Dim txtBox(1 To 12) As New Classe1 'Pour 12 TextBox

Private Sub UserForm_Initialize()

   Dim n, x As Long
    Dim ctrl As Control
    'Pour les 12 derniers
    For Each ctrl In Controls
        For n = 1 To 12
            If ctrl.Name = "TextBox" & n Then
                x = x + 1
                Set txtBox(x).txtBox = ctrl
           End If
       Next n
   Next

End Sub


'Obliger à saisir toutes les cases vides lors de la validation du USF (si case vide alors mettre un zéro)
Private Sub Cmd3_click()

    For i = 1 To 12
        If Me.Controls("TextBox" & i) = "" Then MsgBox "Case" & i & "vide" & vbNewLine & "si vide mettre un 0": Exit Sub
    Next i

'Envoyer le contenu des textbox vers les cellules excel en acceptant les calculs avec virgules et points
    Range("C1") = Val(Replace(Me.TextBox1, ",", "."))
    Range("C2") = Val(Replace(Me.TextBox2, ",", "."))
    Range("C3") = Val(Replace(Me.TextBox3, ",", "."))
    Range("C4") = Val(Replace(Me.TextBox4, ",", "."))
    Range("C5") = Val(Replace(Me.TextBox5, ",", "."))
    Range("C6") = Val(Replace(Me.TextBox6, ",", "."))
    Range("C7") = Val(Replace(Me.TextBox7, ",", "."))
    Range("C8") = Val(Replace(Me.TextBox8, ",", "."))
    Range("C9") = Val(Replace(Me.TextBox9, ",", "."))
    Range("C10") = Val(Replace(Me.TextBox10, ",", "."))
    Range("C11") = Val(Replace(Me.TextBox11, ",", "."))
    Range("C12") = Val(Replace(Me.TextBox12, ",", "."))
    
    Label3 = Range("C13")

End Sub
    
 Private Sub Cmd4_click()
    Dim fichier As String
        On Error Resume Next
        ChDir "C:\Programmes\"
        fichier = Application.GetSaveAsFilename(fileFilter:="Excel Files (*.xlsm), *.xlsm")
        
        If fichier <> False Then ThisWorkbook.SaveAs fichier
End Sub

Private Sub Cmd6_Click()
    UserForm1.Hide
    UserForm2.Show
End Sub





A voir également:

8 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
26 avril 2014 à 14:33
Bonjour,

Je joins les deux fichiers ????? ou sont-ils !!!!
0
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
Modifié par bizic le 27/04/2014 à 12:30
Bonjour f894009,

Désolée, j'ai oublié de joindre les fichiers, mais maintenant que tu le dis, je ne vois pas comment faire.

Peux tu me l'expliquer STP ?

Merci beaucoup!!!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
27 avril 2014 à 16:26
Bonjour,

clic sur le lien suivant: https://www.cjoint.com/

Ne paa oublier de Copier/coller le lien cree dans votre prochain message
0
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
27 avril 2014 à 20:48
Bonjour,

Voici les fichiers concernés:

http://cjoint.com/data3/3DBuUVTMDG1_test_saisie_numerique_vok_-_copie.zip

http://cjoint.com/data3/3DBuV6Kfvda_prog_plan_d__aff_forum.zip

Merci pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 avril 2014 à 07:55
Bonjour,

votre fichier modifie:

simple optimisation code creation classes textbox

https://www.cjoint.com/?DDCh3roM6Bs

rendez compte svp

A+
0
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
28 avril 2014 à 13:52
Un Grand Grand MERCI f894009 !!!!

C'est super ça fonctionne. Heureusement que vous m'avez aidée car je n'aurais pas trouvé seule.

Excusez moi de mon ignorance, mais dans la condition que vous avez ajoutée, que signifie la partie du code ?

(ctrl.Name,7)

Cdlt
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 avril 2014 à 14:51
Re,

normalement, ce que vous aviez ecrit aurait du marche. Mais, j'ai fait cette modif
If Left(ctrl.Name, 7) = "TextBox" Then

qui peut etre aussi

If TypeOf Ctrl Is MSForms.TextBox Then
(plus dans style excel)

permet reduire le temps d'execution, vu qu'il y a quelques 866 controls dans au moins deux Userforms, en prenant seulement les controls textbox pour creer les classes sans faire les boucles de 280 a chaque controls qui ne sont pas des textbox

Est-ce que votre programmation de depart (nombre de controls)"perturbait" excel??? Apres cette modif c'etait bon
0
bizic Messages postés 7 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
Modifié par bizic le 28/04/2014 à 18:31
Re,

Oui, la programmation de départ perturbait excel mais pas tellement sur la rapidité d'exécution car je validais chaque USF individuellement; par contre, le message "erreur 9...." s'affichait sans que je parvienne à en identifier la cause. En pointant le code avec F8, le curseur me mettait bien sur la ligne de code que vous avez modifiée, mais étant débutante, je ne savais pas quelle modification apporter.

En tout cas, la modification que vous avez apportée fonctionne très bien et je vous en remercie vivement.

Bonne continuation et peut-être à bientôt pour une autre question

Encore Merci
0