simplification macro

P

philippe69

Guest
bonjour le forum

je joins ci-dessous une petite macro qui gère qq textbox. Cette macro fonctionne bien, mais j'aimerais la simplifier par une boucle. Mais mes connaissances en vba étant encore sommaires, je sollicite donc votre aide.

Merci par avance
Philippe

Code:
Private Sub CommandButton1_Click()
If TextBox1.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox2.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox3.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox4.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox5.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox6.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox7.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox8.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox9.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox10.Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
ElseIf TextBox11.Value = '' Then
MsgBox ('Veuillez saisir toutes les informations demandées')
Exit Sub
Else
Sheets('Feuil3').Range('A1') = CDbl(TextBox1.Value)
Sheets('Feuil3').Range('A2') = CDbl(TextBox2.Value)
Sheets('Feuil3').Range('A3') = CDbl(TextBox3.Value)
Sheets('Feuil3').Range('A4') = CDbl(TextBox4.Value)
Sheets('Feuil3').Range('A5') = CDbl(TextBox5.Value)
Sheets('Feuil3').Range('A6') = TextBox6.Value
Sheets('Feuil3').Range('A7') = TextBox7.Value
Sheets('Feuil3').Range('A8') = TextBox8.Value
Sheets('Feuil3').Range('A9') = CDbl(TextBox9.Value)
Sheets('Feuil3').Range('A10') = CDbl(TextBox10.Value)
Sheets('Feuil3').Range('A11') = CDbl(TextBox11.Value)
MsgBox ('votre saisie a été prise en compte')
End If
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Philippe, bonsoir le forum,

Je te propose ce code :


Private Sub CommandButton1_Click()
Dim i As Byte 'déclare la variable i
Dim x As Byte 'déclare la variable x

For i = 1 To 11 'boucle sur les 11 TextBoxes
If Me.Controls('TextBox' & i).Value = '' Then 'condition : si la TextBox est vide
MsgBox ('veuillez rentrer les informations demandées') 'message
Me.Controls('TextBox' & i).SetFocus 'place le curseur dans la TextBox
Exit Sub 'sort de la procédure
End If 'fin de la condition
Next i 'prochaine TextBox

For x = 1 To 11 'boucle sur les 11 TextBoxes
Select Case x 'en fonction de x
Case 1 To 5 'x de 1 à 5
'place la donnée de la TextBox dans le tableau
Sheets('Feuil3').Cells(x, 1).Value = CDbl(Me.Controls('TextBox' & x).Value)
Case 6 To 8 'x de 6 à 8
'place la donnée de la TextBox dans le tableau
Sheets('Feuil3').Cells(x, 1).Value = Me.Controls('TextBox' & x).Value
Case 9 To 11 'x de 9 à 11
'place la donnée de la TextBox dans le tableau
Sheets('Feuil3').Cells(x, 1).Value = CDbl(Me.Controls('TextBox' & x).Value)
End Select
Next x 'prochaine TextBox
End Sub

Message édité par: Robert, à: 15/02/2006 19:40
 

justine

XLDnaute Occasionnel
bonsoir le forum, philippe69

Private Sub CommandButton1_Click()
for i = 1 to 11
If controls('TextBox' & i).Value = '' Then
MsgBox ('veuillez rentrer toutes les informations demandées')
Exit Sub
next
for i = 1 to 5
Sheets('Feuil3').Range('A' & i) = CDbl(controls('TextBox' & i).Value)
next
Sheets('Feuil3').Range('A6') = TextBox6.Value
Sheets('Feuil3').Range('A7') = TextBox7.Value
Sheets('Feuil3').Range('A8') = TextBox8.Value
Sheets('Feuil3').Range('A9') = CDbl(TextBox9.Value)
Sheets('Feuil3').Range('A10') = CDbl(TextBox10.Value)
Sheets('Feuil3').Range('A11') = CDbl(TextBox11.Value)
MsgBox ('votre saisie a été prise en compte')
End If
End Sub
 
M

Mytå

Guest
Salut Philippe et Robert

Juste pour simplifier un peu plus :)


For X = 1 To 11
Select Case X
Case 1 To 5, 9 To 11
Sheets('Feuil3').Cells(I, 1).Value = CDbl(Me.Controls('TextBox' & I).Value)
Case 6 To 8
Sheets('Feuil3').Cells(I, 1).Value = Me.Controls('TextBox' & I).Value
End Select
Next X
End Sub
 

justine

XLDnaute Occasionnel
bonsoir le fil.
philippe, je te presente mes excuses, je me suis un peu trop empressée a te repondre et je t'ai donné un code qui ne pouvait pas fonctionner.
mais j'ai vu que d'autre personne l'on remarqué et me l'on fait savoir avec 'ironie'.
je ferai attention dorenavant.
excuse moi encore.
justine
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Hé Justine, je ne sais pas pourquoi, mais je me sens gêné pas rapport à ton post. Cette 'ironnie' c'est contre moi qu'elle était dirigée et le fait que tu la mette entre guillemets ça me donne l'impression que tu as mal pris la chose.

Comme tu disais : desolee robert, j'ai pas vu que tu coomposais , j'ai plaisanté sur ma composition...

Bref, je ne voulais absolument pas ironiser sur ton code, que je n'avais même pas analysé d'ailleurs.

Désolé de t'avoir froissé si c'est le cas.


Message édité par: Robert, à: 15/02/2006 20:41
 

justine

XLDnaute Occasionnel
je te pardonne robert, je pensais que tu te moquais de mon code, il manquait quelques elements pour completer.
tu sais, cela ne fait pas longtemps que je me suis lancee dans la macro, et j'avoue que j'aime ca, et je suis consciente que je suis loin d'avoir le niveau de certains.
je pensais que tu te moquais du code que j'avais concocté a ma maniere avec le peu que je connaissais.
soit, maintenant je connais avec la methode Case
robert, avec sincerité, tu es pardonné et meme que c'est moi qui dois me faire pardonner car apparament, on n'etait pas du tout sur la meme longueur d'onde. j'ai mal receptionné le message.
justine
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Ha Justine, je suis rassuré. Tu sais, c'est pas la première fois qu'on se croise et j'ai déjà pu apprécier tes connaissances. Quant à mon niveau il est médiocre mais tout comme toi j'aime ça et grâce à ce forum, je m'améliore de jours en jours.

Au plaisir de te recroiser sur d'autres fils.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir philippe69, Robert, Justine, Mytå, bonsoir à toutes et à tous :)

Moi j'aime bien jouer au jeu des plus courtes... celles qui sont les meilleures :p :

Private Sub CommandButton1_Click()
'
Dim i As Byte
Dim Tableau(1 To 11, 1 To 1) As Variant

  With Me
    For i = 1 To 11
      If .Controls('TextBox' & i).Value = '' Then
        MsgBox ('veuillez rentrer les informations demandées')
        .Controls('TextBox' & i).SetFocus
        Exit Sub
      Else
        Tableau(i, 1) = IIf((i Mod 9) < 6, .Controls('TextBox' & i), _
            CDbl(.Controls('TextBox' & i)))
      End If
    Next i
  End With
Sheets('Feuil3').Range('A1:A11') = Tableau
End Sub

Il y a certainement moyen de faire encore plus court, mais pas pour moi ;)

EDITION : Mise en page

A+

Message édité par: Charly2, à: 15/02/2006 22:10

Message édité par: Charly2, à: 15/02/2006 22:14
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, Bonsoir Charly, bonsoir le forum,

Désolé Charly mais si je tape du numérique dans les 5 premieres TextBoxes, du texte dans les 6ème, 7ème et 8ème, puis du numérique dans les 9ème, 10ème et 11ème (comme l'indique Philippe), ton code plante. Je pense que cerner (1, 2, 3, 4, 5, 9, 10 et 11) avec MOD ça doit pas le faire.

Arf, en fait je suis bien content car ça faisait un moment que tu me grillait mes plans... Lol. Tiens tu vois Justine, là je me moque grave de sa gueule au père Charly... Mais rassure-toi, c'est pour de rire et surtout pour qu'il réagisse et nous ponde son 1000ème post qui l'obligera à faire un barbatruc...


Message édité par: Robert, à: 15/02/2006 22:38
 

Charly2

Nous a quittés en 2006
Repose en paix
re Robert,

Je t'attendais sur ce coup-là :) :) :)

Le 1000ème, je l'ai posté pour 2 anniversaires et une fête !!!

Quant à mon Mod, qu'est-ce qu'il a ??? Il est pô bien mon Mod à moi ?

1 Mod 9 ‹ 6 =› True
2 Mod 9 ‹ 6 =› True
3 Mod 9 ‹ 6 =› True
4 Mod 9 ‹ 6 =› True
5 Mod 9 ‹ 6 =› True
6 Mod 9 ‹ 6 =› False
7 Mod 9 ‹ 6 =› False
8 Mod 9 ‹ 6 =› False
9 Mod 9 ‹ 6 =› True
10 Mod 9 ‹ 6 =› True
11 Mod 9 ‹ 6 =› True

On peut pas faire plus court comme explication :p . Pis d'abord, y'a plus court ! Je le sais de source sûre, et Hervé, y sait de quoi y parle. Hein ? mais non j'l'ai pô dit !!!

Sinon je suis sur mon barbatruc...

A+ ;)

Message édité par: Charly2, à: 15/02/2006 22:52
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Charly désolé mais je ne comprends pas pourquoi ça ne marche pas. Tu as raison, t'es un mec à la Mod... Ou plutôt ton Mod est nickel mais alors explique-moi pourquoi ça plante quand dans la pièce jointe je remplie les champs bleu de numérique et les blancs de texte. J'en perds mon latin, Bordelum de merdas....
[file name=Charly.zip size=11241]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Charly.zip[/file]
 

Pièces jointes

  • Charly.zip
    11 KB · Affichages: 20

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 015
dernier inscrit
kkgk