XL 2010 PROCÉDURE TROP GRANDE

CHARRIER

XLDnaute Nouveau
Bonjour à tous,

J'ouvre ce fil pour poursuivre un fil initié par Marjolaine [Juste pour infos] Ce fil a été initié en 2008 (par Marjolaine) et oui c' est pas bien...

Mon problème est le suivant :
Après avoir fait les changements sur Valider_C3 toujours "Procédure trop grande" (voir fichier sur UserForm Valider_C3)

Suite au fil précédant.

jean marie
Qu'entends tu parle :
pour pouvoir traiter les informations séparément par l'utilisateur.
réponse : En clair je veux un Userform pour C1 . C2 . C3 . C4 . C5 . C6
Tu dis :
puis je pense pouvoir adapter pour le autres.
réponse : Si ont arrive a faire fonctionner Valider_C3 je pense pouvoir adapter pour les autres.
Sachant que je n'ai laisser dans le fichier que les feuilles (non visible) pour les informations de C3 exemple de la feuille ouverte C3.1.1 et C3.1.2


Combien de Userform ?
réponse : Et bien il en faudra 6 au final

Suite au fil

Dans C.3.1.1
Peux tu m'expliquer ?
Ce que représente et où se trouve dans C3 ou les feuilles C3.1.x
la "Valeur du positionnement actuel :"

Réponse : la "Valeur du positionnement actuel :"se trouve en dessous de la dénomination rechercher exemple "C3.1.1 - Identifier les risques d'accidents et les risques d'atteinte à la santé liés au poste de travail." en E3 pour élève1_pierre : valeur 10 sur 20 sur la feuille C3.1.1 et C3
La feuille C3 est une feuille récape de toutes les sous compétences.
La feuille C3.1.1 est une feuille ou ont va conserver les informations de cette compétence pour les faire remonter dans le userform avec le bouton : : Rechercher dans X la valeur du positionnement actuel : :

Donc lors de l'action du Bouton :
: : Rechercher dans X la valeur du positionnement actuel : :
Tu fais remonter les infos de la feuille Ex : C3.1.1 et tu remplis les différents controls du Userform

Réponse : OUI c'est ça et avec le bouton MODIFIER ont modifie les valeurs si besoin en les enregistrant dans : C3.1.1 par exemple.


Sur Valider_C3 toujours "Procédure trop grande" (voir fichier sur UserForm Valider_C3)
Merci de prendre du temps pour moi c'est vraiment sympa .

MERCI A TOUS
 

Pièces jointes

  • TDB - Copie.xlsm
    1.5 MB · Affichages: 31

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

CHARRIER
Oui (car de mémoire, plusieurs blocs de code se répètent)
On peut aussi diviser le code en plusieurs sous-procédures.

Vu le nombre de lignes, cela demande une quasi-refonte du code existant.
(Ce qui risque d'être fort chronophage)
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

[Suggestion en passant]
Vu la taille de ton fichier exemple et le nombre plus que conséquent de lignes de code VBA, je te suggére de repartir sur un exemple basique à étoffer au fil de l'eau
[/Suggestion en passant]

Exemple de simplification
On peut remplacer pour un même résultat la procédure B par la A
VB:
Private Sub UserForm_Initialize() ' procédure A
Dim ctrl As Control, i&
i = 2
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "TextBox" Then ctrl.Value = Cells(i, "A").Value: i = i + 1
Next ctrl
End Sub
'Private Sub UserForm_Initialize()' procédure B
'TextBox1.Value = Range("A2").Value
'TextBox2.Value = Range("A3").Value
'TextBox3.Value = Range("A4").Value
'TextBox4.Value = Range("A5").Value
'TextBox5.Value = Range("A6").Value
'TextBox6.Value = Range("A7").Value
'TextBox7.Value = Range("A8").Value
'TextBox8.Value = Range("A9").Value
'TextBox9.Value = Range("A10").Value
'TextBox10.Value = Range("A11").Value
'TextBox11.Value = Range("A12").Value
'TextBox12.Value = Range("A13").Value
'TextBox13.Value = Range("A14").Value
'TextBox14.Value = Range("A15").Value
'TextBox15.Value = Range("A16").Value
'TextBox16.Value = Range("A17").Value
'TextBox17.Value = Range("A18").Value
'TextBox18.Value = Range("A19").Value
'TextBox19.Value = Range("A20").Value
'TextBox20.Value = Range("A21").Value
'End Sub
NB: J'ai mis la seconde en commentaire (avec le '), car on ne peut pas voir deux procédures avec le même nom dans un projet VBA.

PS: Si tu veux tester, il te faut un userform avec 20 TextBox et des valeurs sur une feuille (de la cellule A2 à A21)
 

Staple1600

XLDnaute Barbatruc
Re

Ce n'était qu'une suggestion.

Pour le reste, puisque tu as le message "Procédure trop grande", cela implique donc de la changer ou la remanier.
Dans les deux cas, il faut quelqu'un qui s'y colle.
Soit toi, soit un ou des bénévoles du forum
(ou dernier option si cela doit être rapidement fait: rémunérer quelqu'un pour le faire)

PS: Mon code précédent est juste illustratif
 

Staple1600

XLDnaute Barbatruc
Re

Autre suggestion (sur une manière de faire)
J'ai copié ton userform dans un classeur vierge
Classeur dans lequel j'ai copié en valeurs seules le contenu de la feuille C3
J'ai également créé une feuille Tableau de Bord
Puis j'ai mis en commentaire tout le code VBA contenu dans l'userform pour procéder étape par étape
Exemple avec la procédure Initialize de ton userform
Voici une manière de réduire le nombre de ligne dans cette procédure
VB:
''================================================================================================
''INITIALISER LE USERFORM A L'OUVERTURE
''================================================================================================
Private Sub UserForm_Initialize()
Dim f As Worksheet, I&, dercolon&
TextBox14 = DateValue(Now) 'Impose un format de DATE "25/11/2019"
Nombre.List = Split("1 2 3 4 5+")
With Me.ScrollBar1          'Changement automatique des valeurs de la barre
.Min = 33: .Max = 200
.LargeChange = 10
.SmallChange = 339 / 10: .Value = 116
End With
Set f = Sheets("C3")
ComboBox1.List = f.Range(f.Range("A3"), f.Range("A" & Rows.Count).End(3)).Value
With Sheets("Tableau de bord")
ComboBox1.Value = .[A2]: Nom_eleves = .[A1]
End With
End Sub

EDITION: Bonsoir ChTi160
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir CHARRIER
Bonsoir JM ,le Forum
j'avais fait ceux ci , je viens de le retrouver lol (pas fonctionnel à 100%) donc perfectible
Voir le Userform(UsF_Competences) .
ne permet de traite qu'une partie du Problème (seul la sélection de C3 permet d'avancer )!
dans l'attente d'un retour sur la forme
jean marie
 

Pièces jointes

  • TDB-Chti160-3-2.xlsm
    1.6 MB · Affichages: 9

CHARRIER

XLDnaute Nouveau
Bonsoir ChTi160

Bonsoir JM ,le Forum
j'avais fait ceux ci , je viens de le retrouver lol (pas fonctionnel à 100%) donc perfectible
Voir le Userform(UsF_Competences) .
ne permet de traite qu'une partie du Problème (seul la sélection de C3 permet d'avancer )!
dans l'attente d'un retour sur la forme
jean marie

OUI c'est génial. Pour moi la forme est fonctionnel et mieux pour le futur utilisateur, super JM.
Effectivement il faudrait pouvoir modifier les valeurs et les enregistrer dans la feuille concernée, mais c'est super prometteur..
Il me faut du temps pour comprendre ton code (et oui mes compétences en codage est limité, c'est pour ça que je vous demande de l'aide ! )

Merci JM pour ce super travail.
cordialement
 

CHARRIER

XLDnaute Nouveau
Bonjour à tous,

Bonjour lefil,

CHARRIER
Pas de réaction sur le code "allégé" proposé dans le message#10?
C'est pourtant ce qu'on peut appeler de l'aide, non ? :rolleyes:

Bien sur que c'est de l'aide Staple1600 dans l'action je pensais avoir remercié tous le monde, alors merci.
Pour le code du message#10 je n'ai pas eu le temps d'expérimenté (voir message#9)
Effectivement je me suis précipité sur le travail de JM :)
je suis sur le fichier de JM pour voir si ça me vas, ensuite je ferais des choix! travailler sur la base du fichier de JM ou de tout recoder avec la base ton code "allégé".

Cordialement à vous tous,
 

ChTi160

XLDnaute Barbatruc
Bonsoir CHARRIER
Bonsoir le Fil ,le Forum
Petites questions :
Peux tu m'expliquer le résultat de L'action sur le ScrollBar1 à part qu'il modifie la valeur du TextBox1
et le résultat attendu !
Pourquoi deux Controls avec la "Moyenne de Cx :" et Idem pour "Valeur du positionnement actuel :" ?
Que représentent ces deux valeurs par rapport à la note dans "TextBox3"
Pas sur d'être Clair mais bon Lol
Merci
jean marie
 

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 612
Membres
111 225
dernier inscrit
arnaud3110