Amélioration d'un code VBA

Résolu
Bonjour a toutes et tous, Forum Bonjour

Serait'il possible svp d'optimiser le code ci-dessous afin d'éviter le répètitif

Je vous souhaite une bonne journée

Cordialement Ray

   
For i = 2012 To 2030
ComboBox1.AddItem i
Next i
ComboBox1.Text = Year(Now)

Dim An As Long, Sp As Long: Sp = 19
An = ComboBox1.Text

For i = 1 To 12
If i = 2 Then Sp = 22
If i = 3 Then Sp = 26
If i = 4 Then Sp = 21
If i = 5 Then Sp = 24
If i = 6 Then Sp = 23
If i = 7 Then Sp = 22
If i = 8 Then Sp = 28
If i = 9 Then Sp = 22
If i = 10 Then Sp = 22
If i = 11 Then Sp = 25
If i = 12 Then Sp = 22

Label483.Caption = Label483.Caption & Space(Sp) & An
Next i

4 réponses

  1. Contributeur
    Bonjour

    Dim i as integer

    Dim An As integer, Sp As byte
    An = ComboBox1

    For i =1 to 12
    Sp=choose(i,22,26,21 etc)
    etc...

    mais je n'ai pas compris pourquoi sp=19 dans les déclarations
    et pourquoi tu mets l'année (an) en texte
    Michel
    2
    1. Salut Michel_m

      j'ai adapter a mon programme et j'ai regarder l'aide pour (choose) je ne connaissais pas
      bon en tout cas ca fonctionne

      Merci pour ton aide et ton savoir partagé

      Cordialement Ray
      0
  2. Modérateur
    Bonjour,

    Une variante à la proposition de Michel (Salut!), en passant par un Array :

    Dim An As Integer, i As Byte, Espaces()
    
    Espaces = Array(19, 22, 26, 21, 24, 23, 22, 28, 22, 22, 25, 22)
    An = Year(Now)
    For i = 0 To 11
       Label1.Caption = Label1.Caption & Space(Espaces(i)) & An
    Next i


    Sp = 19 dans les déclarations doit être du à la première valeur que tu souhaites donner à Sp. Je l'ai donc mis en premier dans l'Array.

    1
    1. Salut Pijaku

      Bon j'ai essayer également ton code mais ca ne fonctionne pas

      rien ne s'affiche dans mon label, j'ai chercher mais pas trouvé encore

      a plus tard et merci également pour ton aide

      Cordialement Ray
      0
    2. Modérateur
      As tu changé Label1 par Label483?
      0
    3. Oui oui bien sur

      j'ai bien vérifier
      0
    4. je la refait après dejeuner
      te tient au courant
      merci bon app

      Ray
      0
  3. Salut Michel et pikaju

    Merci pour vos réponses c'est sympa a vous deux

    ci-joint le bandeau que je souhaite réaliser

    http://www.cjoint.com/?0LkiW6lJFTi

    Donc Sp=19 est pour placer Janv pou ne pas qu'il colle au gauche de l'USF

    le petit Label rose sera transparent, je l'ai rendu visible pour l'instant

    et ci dessous le code qui m'a permis de faire le bandeau

    c'est pôurquoi je souhaiterai optimiser tout ça car c'est pas terrible

    Merci a vous pour les codes je vais essayer ça dès mon retour RDV toubib

    encore merci a plus tard et une bonne journée a vous

    Cdlt Raymond


    For i = 2012 To 2030
    ComboBox1.AddItem i
    Next i
    ComboBox1.Text = Year(Now)

    Dim An As Long, Sp As Long: Sp = 19
    An = ComboBox1.Text

    For i = 1 To 12
    If i = 2 Then Sp = 22
    If i = 3 Then Sp = 26
    If i = 4 Then Sp = 21
    If i = 5 Then Sp = 24
    If i = 6 Then Sp = 23
    If i = 7 Then Sp = 22
    If i = 8 Then Sp = 28
    If i = 9 Then Sp = 22
    If i = 10 Then Sp = 22
    If i = 11 Then Sp = 25
    If i = 12 Then Sp = 22

    Label483.Caption = Label483.Caption & Space(Sp) & An
    Next i

    '*** AFFICHAGE DES N°s ET DES MOIS DE L'ANNEE
    Dim Numéro As String, Mois As String

    Numéro = " 1" & Space(11) & "2" & Space(11) & "3" & Space(11) & "4" & Space(11) & "5" & Space(11) & "6" & Space(11) & "7" & Space(11) & "8" & Space(11) & "9" _
    & Space(11) & "10" & Space(9) & "11" & Space(9) & "12"

    Mois = " Janv" & Space(6) & "Févr" & Space(7) & "Mars" & Space(6) & "Avr" & Space(8) & "Mai" & Space(7) & "Juin" & Space(7) & "Juil" & Space(8) & "Aoùt" & Space(6) _
    & "Sept" & Space(7) & "Oct" & Space(8) & "Nov" & Space(7) & "Déc"

    Label455.Caption = Numéro
    Label467.Caption = Mois
    0
    1. http://cjoint.com/?0Lkjd6XMeDY

      le lien est cette fois
      0