Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr!...

Marboi

XLDnaute Occasionnel
Bonjour à vous tous.
J'ai créé un tableau identique sur 7 feuilles et j'appelle par un bouton situé sur la 1ère feuille, 1 USF qui comporte 7 pages de 122 TextBox chacunes. La valeur de chaque Textbox (de chaque page de l'USF) se place dans des cellules bien définies et non contigues sur les 7 feuilles.
Il arrive parfois que je dois modifier des valeurs dans certaines feuilles de certaines TextBox et j'ai donc créé un 2ème bouton qui appelle une autre USF (identique dans sa conception : 7 pages et 122 TextBox chacunes) mais qui récupère la valeur pour chaque TextBox et me permet de modifier QUE ce qui est nécessaire et ainsi de re-valider sans perte de données.
Cette procédure bloque par ce message d'erreur "Procèdure trop grande !" Elle fonctionne si je réduis d'un tiers la dernière procédure de la 7ème page de l'USF en la mettant en commentaire par exemple.

Mes questions :
- Comment améliorer mon code pour récupérer Toutes les valeurs de chaque pages dans chaque TextBox sans que ça bloque (il y a sans doute une simplification d'écriture, car je me suis tapé plus de 880 lignes d'écritures par USF !)
- Comment améliorer le code pour la saisie de valeur dans les TextBox (en fait j'ai écris ligne par ligne ce que chaque TextBox devait faire et re-belotte, à nouveau 880 lignes d'écritures).

Je mets mon tableau sachant que j'ai été obligé de supprimer 6 feuilles et 6 pages des 2 USF ainsi que les lignes de codes qui s'y rapportent pour pouvoir le faire descende en dessous des 50 Ko.
 

Pièces jointes

  • ANALYCA2.zip
    48.4 KB · Affichages: 77

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Bonjour

le plus facile serait de bien nommer tes textbox

par exemple

textbox0207 corespondrait à la cellule B7 etc

et ensuite tu peux boucler sur tes colonnes et tes lignes et aulieu d'appeler tes cellules par range tu les appelles par cells et tes tes textbox par controls

exemple j'ai pas testé

for x = 2 to 15 'pour les colonnes
for y = 7 to 33 ' pour le slignes mais à voir car tout ne se suit pas
cells(y,x)=controls("textbox" & format(x,00)&format(y,00))
 

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Bonjour Pascal XLD,
Là, c'est un peu du chinois pour moi ! Il faut donc que je nommes toutes les Textbox pa rapport aux cellules mais le problème est que j'ai 7 pages sur l'USF et c'est pour ça que ça va de 1 à + de 900.
For X 2 to 15 pour les colonnes ? Même si c'est pas contigu ?
Idem pour les cellules. Je suis désolé mais c'est malheureusement pas clair pour moi.
Peux-tu m'apporter un peu plus de précisions ?

Merci par avance.
 

Hervé

XLDnaute Barbatruc
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

bonsoir

pas bete pascal (comme d'hab) :):)

j'aurais pas pensé à faire comme ca.

sinon, on peut utiliser la propriété tag pour stocker l'adresse de renvoi, et ensuite faire une boucle du style :

dim ctrl as control

for each ctrl in me.controls
if ctrl.tag<>"" then
range(ctrl.tag)=ctrl.value
end if
next ctrl

procédure vraiment pas testé, mais alors vraiment pas du tout :D

sinon, on peut aussi se servir de la propriété controlsource (voir aide vba), c'est encore plus simple.

salut
 

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Bonsoir à toi Hervé,

Merci de vos réponses mais ca me parait bien compliqué pour moi. Abuserai-je en vous demandant un petit exemple concret de vos manipulations ?
Là je suis largué.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Re

Pas bete du tout Herve. Comme d'hab ;)

Sinon un petit module de classe aussi histoire de faire complet.

Pour l'exemple Marboi pas trop le temps de suite perso; excuses-moi
 

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Pas de problèmes Pascal, merci de perdre ton temps avec moi. C'est pas urgent. Pour l'instant je fais avec mes pauvres moyens, mais si tu disposes d'un peu (beaucoup ?) de temps par la suite, ça me serait bien utile. Comme je suis persuadé que je vais être obligé de faire évolué ces tableaux par la suite, ça m'éviterait pas mal d'erreurs de saisie et de recopie de ces fameuses lignes de code.

Bonne soirée et encore merci.
 
T

THE CAT 2007

Guest
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Bj tous,

- Créer 1 user form ( déjà fait il y en a 7 !)

- créer une feuille visible ou cachée
- parcourir la collection des textbox avec une boucle
- récupérer :
les valeurs des textbox et la première fois le "nom", numéro des textbox

1 colonne de la feuille visible ou cachée : le nom des textbox ou numéro
7 x 1 colonne pour chaque donnée à stocker en face du bon nom de textbox

avantage : 1 seul Userform pour tout récupérer et 1 feuille de données

Question : chaque userform des 7 est différent par quoi ? Placer cette différence colonne 2,3,4 ... 7, le nom des textbox étant en 1

créer des colonnes:
8 (pour colonne 2), 9 pour 3 qui renvoient dans les bonnes cellules des bonnes feuilles(adresses) .....

Toutes les données et leur renvoi au bonnes adresses sont sur une feuille ;-)
 
T

THE CAT 2007

Guest
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Re bj,

Petit fichier joint pour éclaircir le propos ;-)
 

Pièces jointes

  • Classeur10.xls
    21 KB · Affichages: 152
  • Classeur10.xls
    21 KB · Affichages: 153
  • Classeur10.xls
    21 KB · Affichages: 151

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Merci The Cat,
Mais c'est pas 7 userform mais 2. Je m'explique.
1 Userform qui contient 7 pages identiques mais pour alimenter 7 feuilles différentes par exemple de 01 à 07. Chaque page du Userform contient 120TextBox qui vont permettre la saisie de données et les reporter dans les cellules correspondantes de chaque page (voir mon fichier qui ne contient plus qu'une seule page dans le USF à cause de son poids).
Le 1er USF me permet de saisir les données et les Textbox sont vierges de tous caractères, je valide, les données se mettent en place dans les feuilles correspondantes. J'imprime et j'enregistre.

Le 2ème USF devrait me permettre de récupérer toutes les valeurs que j'y ai mis avec le 1er USF afin de pouvoir modifier telle ou telle cellule (par rapport à un libellé défini dans le USF). Et c'est là que ça coince, car j'ai trop de lignes avec ma façon de faire et ça bloque par le message "Procédure trop grande".
Donc s'il y a possibilité de boucles sur la saisie de Textbox et la récup de valeur, je suis preneur, mais je suis incapable de mettre ça en place, car je ne sais pas comment faire. C'est pourquoi je demandai un petit exemple qui fonctionne afin de mettre en application. Sinon, je ne vois pas comment faire.

A+
 

Bebere

XLDnaute Barbatruc
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

bonsoir le fil
une proposition
une listbox pour choix de la feuille
une listbox remplie avec le contenu de la colonne A de la feuille ,le choix détermine la ligne que tu veux remplir
une rangée de 13 textbox qui correspondent aux colonnes de B à N de la feuille
celles à ne pas remplir les mettre enabled ou visible =false
à bientôt
 

ChTi160

XLDnaute Barbatruc
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Salut Marboi
bonsoir le fil
voila ce que j'ai fait pour l'exemple et je vois que Bebere que je salue à pensé en parti comme moi
j'ai conservé le multipage mais avec une seule page(pas le courage de refaire tout) un userform avec les textbox dessus

j'ai donc mis un combobox pour récupérer les données de la page sélectionnée
c'est un début Lol
car quel est l'intérêt de charger l'ensemble des feuilles pour n'en modifier qu'une (avoir )
il suffirait d'adapter pour faire le choix entre entrer des données et modifier des données existantes
Le fichier :Regarde la pièce jointe ANALYCA3.zip
bonne fin de Soirée
 

Pièces jointes

  • ANALYCA3.zip
    35.5 KB · Affichages: 69
  • ANALYCA3.zip
    35.5 KB · Affichages: 68

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Bonjour CHTI160,
C'est effectivemenbt une bonne idée mais le problème est que j'aurai 7 pages dans l'USF et effectivement je n'en aurai qu'une, voire 3 à modifier, et que si je n'apelle qu'une, 21 ou 3 feuilles pour modifications, lorsque je re-validerai les pages modifiées, il y a de fortes probabilités que les autres feuilles non modifiées (les textbox resteront vides) ,ne se mettent à zéro. C'est déjà l'exprérience que j'ai vécu en modifiant une seule page de l'USF, toutes les autres se sont remises à zéro. Je ne veux pas non plus que sytématiquement à l'ouverture de l'USF, toutes les données soient reprises car celà devient rapu pour les modifs (plein de chiffres partout et rsique d'erreur lors de la nouvelle saisie).
Bonne journée et merci, c'est déjà un très bon début.
 

ChTi160

XLDnaute Barbatruc
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Salut Marboi
Bonjour le fil
Bonjour le Forum
Arff moi je suis dur à comprendre,
donc tu ne serais pas contre le fait d'avoir un Userform avec 118 textbox(plus de multipage) ,plus un combobox (liste des feuilles qui nous interressent) pour appeler la feuille qui va être chargée ou qui va remplie les textbox.
Deux boutons l'un pour remplir (textbox vides) l'autre pour charger et éventuellement modifier (textbox remplis)
il faut savoir si les feuilles sont vides lorsque tu saisies,ou alors tu les vides et ensuite tu charges les textbox qui seront vides ou alors tu charges les textbox des données déjà existantes ,tu les effaces dans les textbox et ensuite tu recolles les nouvelles données à la place de celles déjà présentent Arfff
Bonne journée
 

Marboi

XLDnaute Occasionnel
Re : Procédure trop grande ! 880 Textbox à gérer dans 2 USF, soit 1760 TextBox, Brrrr

Merci de t'occuper de mon cas CHTI160,
Disons que pour moi, le plus simple était d'avoir un seul USF avec mes 7 pages à saisir, car en fait la saisie que je fais concerne des points importants que je dois reprendre d'un tableau qui comporte plus de 800 lignes par bureau ; ces points se situent au mêmes endroits sur chaque page et pour chaque bureau, donc par la force de l'habitude, la saisie n'en est que simplifiée et le changement de bureau par l'USF se fait par les raccourcis clavier. Ce qui actuellement fonctionne.
Les Textbox sont vides à l'appel de l'USF, je saisi, je valide et tout se met en place dans les pages concernées.
Mais au fur et à mesure des saisies, des rectificatifs sont arrivés par la compta et je devais modifier certaines données par ci, par là. Quand c'est une, c'est pas un souci, je me place directement sur la feuille concernée et je modifie manuellement, mais quand il y en a plusieurs Ou que ça concerne des lignes entières, le plus simple était de reprende l'USF mais cette fois-ci avec les TextBox remplies des données validée par la 1ère entrée. Et c'est là que ça bloque avec le message Procèdure trop grande.
Donc, si tu penses qu'il n'y a que ta solution qui permette la saisie et la reprise de saisie par 1 USF et une page + listbox, je prends !
Concrètement, le tableau est enregistré au mois le mois avec la saisie en cours (les tableaux sont imprimés et envoyés à chaque intéresé). La nouvelle saisie remplace les données enregistrées grace à l'USF et ses Textbox qui sont vides à l'ouverture. S'il y a des modifs à faire par la suite, il faut que lesTextBox soient renseignées des données qui se trouvent sur les feuilles afin que la validation de la modif ne change rien aux feuilles NON modifiées et ne modifie que ce qui a été modifié (je ne sais pas si je suis bien clair !).
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87