Recherche de simplification du codage

Résolu/Fermé
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - Modifié par pijaku le 7/04/2016 à 07:59
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 7 avril 2016 à 07:59
Bonjour,

J’ai réalisé un petit programme qui semble fonctionner, mais je me pose la question s’il n’y a pas plus simple en matière de codage.

Voici mon code :

Private Sub CommandButton7_Click()
If ComboBox2 = "" Then
MsgBox (" Vous n'avez pas choisi de client ")
Else: GoTo 1
End If
GoTo 2
1:
 Unload Formulaire_clients
 Sheets("Devis").Activate

        Range("A" & 7).Value = ComboBox2
        Range("B" & 7).Value = ComboBox3
        Range("C" & 7).Value = TextBox1
        Range("D" & 7).Value = TextBox2
        Range("E" & 7).Value = TextBox3
        Range("F" & 7).Value = TextBox4
        Range("G" & 7).Value = TextBox5
        Range("H" & 7).Value = TextBox6
        Range("I" & 7).Value = TextBox7
2:
End Sub


Avez-vous un avis ?

Merci pour vos réponses.

Cordialement
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 7/04/2016 à 08:00
Bonjour,

Evite les Goto.
Ils ne sont utiles qu'en cas de traitement d'erreur. Sinon, le code n'est pas super clair.
Regarde ton code sans Goto :

Private Sub CommandButton7_Click()
If ComboBox2 = "" Then
    MsgBox (" Vous n'avez pas choisi de client ")
Else
    Unload Formulaire_clients
    Sheets("Devis").Activate
    Range("A" & 7).Value = ComboBox2
    Range("B" & 7).Value = ComboBox3
    Range("C" & 7).Value = TextBox1
    Range("D" & 7).Value = TextBox2
    Range("E" & 7).Value = TextBox3
    Range("F" & 7).Value = TextBox4
    Range("G" & 7).Value = TextBox5
    Range("H" & 7).Value = TextBox6
    Range("I" & 7).Value = TextBox7
End If
End Sub


Code que l'on pourrait modifier, sans "activater" la feuille, et simplement en y faisant référence :

Private Sub CommandButton7_Click()
If ComboBox2 = "" Then
    MsgBox (" Vous n'avez pas choisi de client ")
Else
    Unload Formulaire_clients
    With Sheets("Devis")
        .Range("A" & 7).Value = ComboBox2
        .Range("B" & 7).Value = ComboBox3
        .Range("C" & 7).Value = TextBox1
        .Range("D" & 7).Value = TextBox2
        .Range("E" & 7).Value = TextBox3
        .Range("F" & 7).Value = TextBox4
        .Range("G" & 7).Value = TextBox5
        .Range("H" & 7).Value = TextBox6
        .Range("I" & 7).Value = TextBox7
    End With
End If
End Sub

A noter : les points devant les Range pour faire référence à la feuille Devis.

De même Unload Formulaire_clients serait certainement mieux en fin de procédure, comme ceci :
Private Sub CommandButton7_Click()
If ComboBox2 = "" Then
    MsgBox (" Vous n'avez pas choisi de client ")
Else
    With Sheets("Devis")
        .Range("A" & 7).Value = ComboBox2
        .Range("B" & 7).Value = ComboBox3
        .Range("C" & 7).Value = TextBox1
        .Range("D" & 7).Value = TextBox2
        .Range("E" & 7).Value = TextBox3
        .Range("F" & 7).Value = TextBox4
        .Range("G" & 7).Value = TextBox5
        .Range("H" & 7).Value = TextBox6
        .Range("I" & 7).Value = TextBox7
    End With
    Unload Formulaire_clients
End If
End Sub

Cette syntaxe est curieuse :
.Range("A" & 7).Value

Si c'est toujours 7, il convient d'utiliser :
.Range("A7").Value


Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
0