Simplifier un code

Jacques25

XLDnaute Occasionnel
Bonjour à tous,

Je suis entrain de faire un programme de saisie pour mes opérateurs afin qu'il y ait le moins de risque de pertes de données ou d'erreur de manipulation. Pour cela je passe par un userform contenant 216 textbox (8 lignes de saisie possible avec 26 cases à compléter)
J'ai commencé avec le code suivant mais je voudrai savoir s'il y a un moyen de le réduire en longueur sachant que l'aperçu sera en final multiplié par 4. Etant donné que les textbox se suivent et que les colonnes aussi j'espère qu'il y a moyen de faire plus simple.
Avec mes maigres connaissances en VBA je me pemets de m'en remettre à vous.

Merci pour votre aide

Private Sub CommandButton1_Click()
T = Sheets("Tri final valves").Range("a8000").End(xlUp).Row + 1
With Sheets("Tri final valves")
If TextBox1.Value <> 0 Then
.Range("a" & T).Value = ComboBox1.Value
.Range("b" & T).Value = TextBox1.Value
.Range("c" & T).Value = TextBox2.Value
.Range("d" & T).Value = TextBox3.Value
.Range("e" & T).Value = TextBox4.Value
.Range("f" & T).Value = TextBox5.Value
.Range("g" & T).Value = TextBox6.Value
.Range("h" & T).Value = TextBox7.Value
.Range("i" & T).Value = TextBox8.Value
.Range("j" & T).Value = TextBox9.Value
.Range("k" & T).Value = TextBox10.Value
.Range("l" & T).Value = TextBox11.Value
.Range("m" & T).Value = TextBox12.Value
.Range("n" & T).Value = TextBox13.Value
.Range("o" & T).Value = TextBox14.Value
.Range("p" & T).Value = TextBox15.Value
.Range("q" & T).Value = TextBox16.Value
.Range("r" & T).Value = TextBox17.Value
.Range("s" & T).Value = TextBox18.Value
.Range("t" & T).Value = TextBox19.Value
.Range("u" & T).Value = TextBox20.Value
.Range("v" & T).Value = TextBox21.Value
.Range("w" & T).Value = TextBox22.Value
.Range("x" & T).Value = TextBox23.Value
End If
If TextBox28.Value <> 0 Then
.Range("a" & T + 1).Value = ComboBox1.Value
.Range("b" & T + 1).Value = TextBox28.Value
.Range("c" & T + 1).Value = TextBox29.Value
.Range("d" & T + 1).Value = TextBox30.Value
.Range("e" & T + 1).Value = TextBox31.Value
.Range("f" & T + 1).Value = TextBox32.Value
.Range("g" & T + 1).Value = TextBox33.Value
.Range("h" & T + 1).Value = TextBox34.Value
.Range("i" & T + 1).Value = TextBox35.Value
.Range("j" & T + 1).Value = TextBox36.Value
.Range("k" & T + 1).Value = TextBox37.Value
.Range("l" & T + 1).Value = TextBox38.Value
.Range("m" & T + 1).Value = TextBox39.Value
.Range("n" & T + 1).Value = TextBox40.Value
.Range("o" & T + 1).Value = TextBox41.Value
.Range("p" & T + 1).Value = TextBox42.Value
.Range("q" & T + 1).Value = TextBox43.Value
.Range("r" & T + 1).Value = TextBox44.Value
.Range("s" & T + 1).Value = TextBox45.Value
.Range("t" & T + 1).Value = TextBox46.Value
.Range("u" & T + 1).Value = TextBox47.Value
.Range("v" & T + 1).Value = TextBox48.Value
.Range("w" & T + 1).Value = TextBox49.Value
.Range("x" & T + 1).Value = TextBox50.Value
End If

End With
Unload UserForm3
End Sub
 

SergiO

XLDnaute Accro
Re : Simplifier un code

Bonjour Jacques,

Essaie ceci :

Code:
T = Sheets("Tri final valves").Range("a8000").End(xlUp).Row + 1
With Sheets("Tri final valves")
If TextBox1.Value <> 0 Then
.Range("a" & T).Value = ComboBox1.Value
For C = 2 To 24
.Cells(T, C).Value = Me.Controls("Textbox" & C - 1).Value
Next C
End If
For C = 2 To 24
.Cells(T, C).Value = Me.Controls("Textbox" & C - 1).Value
Next C
End If
If TextBox28.Value <> 0 Then
.Range("a" & T + 1).Value = ComboBox1.Value
For C = 2 To 24
.Cells(T + 1, C).Value = Me.Controls("Textbox" & C + 26).Value
Next C
End If
End With
Unload UserForm3
End Sub
 
Dernière édition:

Jacques25

XLDnaute Occasionnel
Re : Simplifier un code

Salut Sergio,

Merci pour ton code, je l'ai un peu modifié, il mettait des erreurs (des copier collé de trop je penses) voici la version finale. Peux tu m'expliquer pourquoi on a un coup C-1 et un coup C+26 dans le code?

Merci de ton aide.

Jacques

Private Sub CommandButton1_Click()
T = Sheets("Tri final valves").Range("a8000").End(xlUp).Row + 1
With Sheets("Tri final valves")
If TextBox1.Value <> 0 Then
.Range("a" & T).Value = ComboBox1.Value
For C = 2 To 24
.Cells(T, C).Value = Me.Controls("Textbox" & C - 1).Value
Next C
End If
If TextBox28.Value <> 0 Then
.Range("a" & T + 1).Value = ComboBox1.Value
For C = 2 To 24
.Cells(T + 1, C).Value = Me.Controls("Textbox" & C + 26).Value
Next C
End If
End With
Unload UserForm3
End Sub
 

ChTi160

XLDnaute Barbatruc
Re : Simplifier un code

Salut Jacques25
Bonjour Sergio
Bonjour le Forum
une autre possibilité non testée
Code:
Private Sub CommandButton1_Click()
Dim T As Long
Dim Col As Byte
With Sheets("Tri final valves")
 T = .Range("a8000").End(xlUp).Row + 1
If Userform1.TextBox1.Value <> 0 Then
     .Cells(T, 1) = Userform1.combobox1.Value
For L = 1 To 22
     .Cells(T, 1 + Col) = Userform1.Controls("TextBox" & Col)
Next
End If
If Userform1.TextBox28.Value <> 0 Then
     .Cells(1 + T, 1) = Userform1.combobox1.Value
 For Col = 28 To 50
     .Cells(1 + T, Col - 26) = Userform1.Controls("TextBox" & Col)
Next

End If

End With
Unload UserForm3
End Sub
Bonne Journée
Ps Pour Sergio il y a un End Sub qui se promene au milieu de ta procèdure Arff et tu as du doubler quelque chose
End Sub 'Ici
For C = 2 To 24
.Cells(T, C).Value = Me.Controls("Textbox" & C - 1).Value
Next C

End If
If TextBox28.Value <> 0 Then
.Range("a" & T + 1).Value = ComboBox1.Value
For C = 2 To 24
.Cells(T + 1, C).Value = Me.Controls("Textbox" & C + 26).Value
Next C
End If
End With
Unload UserForm3
End Sub
 

SergiO

XLDnaute Accro
Re : Simplifier un code

Bonjour ChTi160, re Jacques,

Pourquoi C-1 et C+26?

Pour associer la colonne avec le TextBox :

  • Quand C=2 le TextBox doit être le TextBox1 (2-1) dans la 1ère boucle
  • Pour la 2ème boucle, quand C=2 le TextBox doit être le TextBox28 (2+26).
@+
 

Jacques25

XLDnaute Occasionnel
Re : Simplifier un code

Re,

OK merci, au premier regard ça ne m'avait pas sauté au yeux, Chti 160 je n'ai pas encore essayé ton code, je finissai avec celui de sergio, je le ferai cet après midi, je dois partir en réunion.

Merci à tout les 2 et au forum.

@ plus

Jacques
 

Statistiques des forums

Discussions
312 354
Messages
2 087 548
Membres
103 586
dernier inscrit
julie30620