Reprise de données dans les TextBox

Marboi

XLDnaute Occasionnel
Bonjour le forum,

J'avais concocté un petit programme sous excel 2000 et depuis que je suis passé sous 2007 j'ai une erreur de "procédure trop grande".

J'ai créé un bouton de modif de saisie qui ouvre l'USF et reprend toutes les données des 7 feuilles soit 965 Textbox dont voici un petit exemple :

Private Sub CommandButton3_Click()
UserForm3.Show
UserForm3.TextBox1.Value = Sheets("Secteur SD").Range("B7")
UserForm3.TextBox2.Value = Sheets("Secteur SD").Range("C7")
UserForm3.TextBox3.Value = Sheets("Secteur SD").Range("F7")
UserForm3.TextBox4.Value = Sheets("Secteur SD").Range("G7")
UserForm3.TextBox5.Value = Sheets("Secteur SD").Range("J7")
UserForm3.TextBox6.Value = Sheets("Secteur SD").Range("K7")
UserForm3.TextBox7.Value = Sheets("Secteur SD").Range("N7")
UserForm3.TextBox8.Value = Sheets("Secteur SD").Range("O7")
UserForm3.TextBox9.Value = Sheets("Secteur SD").Range("B8")
UserForm3.TextBox10.Value = Sheets("Secteur SD").Range("C8")
UserForm3.TextBox11.Value = Sheets("Secteur SD").Range("F8")
UserForm3.TextBox12.Value = Sheets("Secteur SD").Range("G8")
UserForm3.TextBox13.Value = Sheets("Secteur SD").Range("J8")
UserForm3.TextBox14.Value = Sheets("Secteur SD").Range("K8")
UserForm3.TextBox15.Value = Sheets("Secteur SD").Range("N8")
UserForm3.TextBox16.Value = Sheets("Secteur SD").Range("O8")
UserForm3.TextBox17.Value = Sheets("Secteur SD").Range("B9")
UserForm3.TextBox18.Value = Sheets("Secteur SD").Range("C9")
UserForm3.TextBox19.Value = Sheets("Secteur SD").Range("F9")
UserForm3.TextBox20.Value = Sheets("Secteur SD").Range("G9")
UserForm3.TextBox21.Value = Sheets("Secteur SD").Range("J9")
UserForm3.TextBox22.Value = Sheets("Secteur SD").Range("K9")
'PVM
UserForm3.TextBox23.Value = Sheets("Secteur SD").Range("B11")
UserForm3.TextBox24.Value = Sheets("Secteur SD").Range("C11")
UserForm3.TextBox25.Value = Sheets("Secteur SD").Range("F11")
UserForm3.TextBox26.Value = Sheets("Secteur SD").Range("G11")
UserForm3.TextBox27.Value = Sheets("Secteur SD").Range("J11")
UserForm3.TextBox28.Value = Sheets("Secteur SD").Range("K11")
'Range("N11") = TextBox29.Value ==> Pas de ratio
'Range("O11") = TextBox30.Value ==> Pas de ratio
UserForm3.TextBox31.Value = Sheets("Secteur SD").Range("B12")
UserForm3.TextBox32.Value = Sheets("Secteur SD").Range("C12")
UserForm3.TextBox33.Value = Sheets("Secteur SD").Range("F12")
UserForm3.TextBox34.Value = Sheets("Secteur SD").Range("G12")
UserForm3.TextBox35.Value = Sheets("Secteur SD").Range("J12")
UserForm3.TextBox36.Value = Sheets("Secteur SD").Range("K12")
' Range("N12") = TextBox37.Value ==> Pas de ratio
' Range("O12") = TextBox38.Value ==> Pas de ratio
UserForm3.TextBox39.Value = Sheets("Secteur SD").Range("B13")
UserForm3.TextBox40.Value = Sheets("Secteur SD").Range("C13")
UserForm3.TextBox41.Value = Sheets("Secteur SD").Range("F13")
UserForm3.TextBox42.Value = Sheets("Secteur SD").Range("G13")
UserForm3.TextBox43.Value = Sheets("Secteur SD").Range("J13")
UserForm3.TextBox44.Value = Sheets("Secteur SD").Range("K13")
'AF
UserForm3.TextBox45.Value = Sheets("Secteur SD").Range("J15")
UserForm3.TextBox46.Value = Sheets("Secteur SD").Range("K15")
UserForm3.TextBox47.Value = Sheets("Secteur SD").Range("N15")
UserForm3.TextBox48.Value = Sheets("Secteur SD").Range("o15")
'PrépA
UserForm3.TextBox49.Value = Sheets("Secteur SD").Range("B17")
UserForm3.TextBox50.Value = Sheets("Secteur SD").Range("C17")
UserForm3.TextBox51.Value = Sheets("Secteur SD").Range("F17")
UserForm3.TextBox52.Value = Sheets("Secteur SD").Range("G17")
UserForm3.TextBox53.Value = Sheets("Secteur SD").Range("J17")
UserForm3.TextBox54.Value = Sheets("Secteur SD").Range("K17")
UserForm3.TextBox55.Value = Sheets("Secteur SD").Range("N17")
UserForm3.TextBox56.Value = Sheets("Secteur SD").Range("O17")
'Info X
UserForm3.TextBox57.Value = Sheets("Secteur SD").Range("B19")
UserForm3.TextBox58.Value = Sheets("Secteur SD").Range("C19")
UserForm3.TextBox59.Value = Sheets("Secteur SD").Range("F19")
UserForm3.TextBox60.Value = Sheets("Secteur SD").Range("G19")
UserForm3.TextBox61.Value = Sheets("Secteur SD").Range("J19")
UserForm3.TextBox62.Value = Sheets("Secteur SD").Range("K19")
UserForm3.TextBox63.Value = Sheets("Secteur SD").Range("N19")
UserForm3.TextBox64.Value = Sheets("Secteur SD").Range("O19")
Etc...
.....................................jusqu'à
UserForm3.TextBox965.Value = Sheets("Secteur Epl").Range("K33")
End Sub


Que puis-je faire pour alléger cette usine à gaz ?

Merci d'avance de votre collaboration.
 

Marboi

XLDnaute Occasionnel
Re : Reprise de données dans les TextBox

Voilà ce que j'ai fait (j'ai mis les 1ères Textbox en commentaire) et j'ai toujours la même erreur :

Private Sub CommandButton3_Click()
UserForm3.Show

'PVM Ob
'UserForm3.TextBox1.Value = Sheets("Secteur SD").Range("B7")
'UserForm3.TextBox2.Value = Sheets("Secteur SD").Range("C7")
'UserForm3.TextBox3.Value = Sheets("Secteur SD").Range("F7")
'UserForm3.TextBox4.Value = Sheets("Secteur SD").Range("G7")
'UserForm3.TextBox5.Value = Sheets("Secteur SD").Range("J7")
'UserForm3.TextBox6.Value = Sheets("Secteur SD").Range("K7")
'UserForm3.TextBox7.Value = Sheets("Secteur SD").Range("N7")
'UserForm3.TextBox8.Value = Sheets("Secteur SD").Range("O7")
'UserForm3.TextBox9.Value = Sheets("Secteur SD").Range("B8")

For i = 1 To 8
userform3.textbox & i=sheets("Secteur SD").cells(i+1,7)
Next i

End Sub
 

Marboi

XLDnaute Occasionnel
Re : Reprise de données dans les TextBox

Désolé Joss56,

Je me suis rendu compte qu'il fallait déclarer la variable I et je ne sais pas le faire proprement, peux-tu m'aider ?

J'essaye d'utiliser des anciennes déclarations VBA pour y arriver mais là, je rame.

Merci
 

fanfan38

XLDnaute Barbatruc
Re : Reprise de données dans les TextBox

Bonsoir
Tu peux pas faire ça car tu n'as pas Range("d7"), Range("e7"), Range("h7"), Range("i7") et Range("l7")...
et de + cells(i+1,7) correspond à: a7, a8; a9 etc... cells(ligne, colonne)...

A+ François
 

fanfan38

XLDnaute Barbatruc
Re : Reprise de données dans les TextBox

Bonjour
Où déplacer tes données pour que celle ci ce suivent et dans ce cas une boucle
for i=1 to x
userform3.textbox & i=sheets("Secteur SD").cells(7,i)
Next i
ou faire plusieurs userform qui s'appelle l'une après l'autre dans la macro de lancement
userform1.show
userform2.show
userform3.show
et dans ce cas mettre dans chaque userform

Private Sub UserForm_Initialize()
UserFormx.TextBox1.Value = Sheets("feuille x").Range("B7")...
End Sub

Ca permettra de couper les 960 textbox en 96 x 10 (par exemple) et ça simplifira la lisibilité du programme...

A+ François
 

laetitia90

XLDnaute Barbatruc
Re : Reprise de données dans les TextBox

bonjour tous :):)
peut être passer par un array le principe j'ai pas forcement mis dans la bonne chronologie!!! a adapter
par contre 965 textboxs pour moi une usine a gaz???
il faudrait voir ton fichier pour simplifier tout ca
exemple passer par un multipage avec tes 7 feuilles on fonction de la consultation de la page on cree dynamiquement 90 textboxs on renseigne puis supprime en quittant la page

ou plusieurs users mais comme cela sans plus d'infos pas simple???
 

Pièces jointes

  • textbox.zip
    17.2 KB · Affichages: 48
  • textbox.zip
    17.2 KB · Affichages: 47
  • textbox.zip
    17.2 KB · Affichages: 53

Marboi

XLDnaute Occasionnel
Re : Reprise de données dans les TextBox

Bonsoir laetitia 90, bonsoir le forum,

Je rentre à mon bureau seulement maintenant pour une petite heure, mais j'y serai demain toute la journée.

Effectivement Laetitia, ce que tu as fait me paraît très bien et c'est là que je me rends compte que mes connaissances excel VBA sont plus que limitées.

Je vous fais passer le fichier que je viens enfin d 'alléger, pour, si vous en avez l'envie, me rectifier cette usine que j'ai montée (mais qui fonctionnait !)

Merci à tous.
 

Pièces jointes

  • Analyse CA2.xlsm
    154 KB · Affichages: 59

Fo_rum

XLDnaute Accro
Re : Reprise de données dans les TextBox

Bonjour,

comme le dit laetitia : 965 ...trop c'est trop ;).
Un exemple avec un seul UsF, un Module de Classe et des boucles (pas blondes celles-ci).
Pour commencer, cliquer sur les noms des feuilles (pour remplacer les plages).
Choisir au départ Modifier pour voir la récupération des saisies (ici, ligne&colonne)
J'ai supprimé quelques kilo en surpoids.
 

Pièces jointes

  • UsFCommun.xlsm
    83.9 KB · Affichages: 56
  • UsFCommun.xlsm
    83.9 KB · Affichages: 58
  • UsFCommun.xlsm
    83.9 KB · Affichages: 50

Marboi

XLDnaute Occasionnel
Re : Reprise de données dans les TextBox

Bonjour Fo_rum,

Je ne comprends pas bien, rien ne marche plus ; il y a effectivement qu'une seule USF mais elle ne s'affiche que sur secteur SD et rien ne se passe.

Peux-tu m'éclairer : cliquer sur les noms de feuilles pour remplacer les plages ? et choisir modifier ?

Merci de ton aide.
 

laetitia90

XLDnaute Barbatruc
Re : Reprise de données dans les TextBox

bonjour tous :):):)

une version en restant sur un array & une combobox
un seul user on peut ajouter autant de feuilles que l'on veut sans modif code
avec le meme user on visualise & modifie si besoin
 

Pièces jointes

  • analyse.zip
    78.9 KB · Affichages: 40
  • analyse.zip
    78.9 KB · Affichages: 31
  • analyse.zip
    78.9 KB · Affichages: 34

Marboi

XLDnaute Occasionnel
Re : Reprise de données dans les TextBox

Laetitia, je te remercie ; ça fonctionne à merveille et je crois que je vais en rester là.

Par contre, peux-tu m'expliquer ces codes :

Dim c, s As Variant, i As Long
Private Sub UserForm_Initialize()
For Each c In ActiveWorkbook.Sheets: c1.AddItem c.Name: Next
End Sub
Private Sub c1_Change()
es
End Sub
Private Sub cmd2_Click()
If c1 <> "" Then es Else Exit Sub
End Sub

Merci de d'avoir pris de ton temps pour me dépatouiller mon usine. Je fais vraiment mes formules à l'arrache mais j'avoue que j'ai souvent du mal à comprendre les boucles et autres.

Encore merci.
 

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE