IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment simplifier userform initialize [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut Comment simplifier userform initialize
    Bonjour
    Nouveaux sur le forum, je débute en VB et je tiens a remercier devellopez.net
    pour les idées et solutions qu'il me procure.
    Voila mon souci
    j'ai un petit userform initailize qui me rempli 6 listbox avec des données provenant de plusieurs feuilles.
    j'ai réécri plusieurs fois le code, toutes les méthode fonctionne trés bien MAIS
    je le trouve lourd, pataud, moche.
    Donc si une bonne âme pouvait me relire et me montrer comment simplifier ce petit bout de code, cela me deboucherai peut etre les neurones.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Private Sub UserForm_Initialize()
    Dim cell As Range
    Feuil25.Unprotect Password:=("8571")
    Feuil27.Unprotect Password:=("8571")
    Feuil60.Unprotect Password:=("8571")
     
        With cboxanim
            num = Feuil02.Range("c14").End(xlDown).Row
            For Each cell In Feuil02.Range("c14:c" & num)
            cboxanim.AddItem cell
            Next
        End With
     
        With cboxvacancier
            num = Feuil09.Range("c65000").End(xlUp).Row
            For Each cell In Feuil02.Range("c30:c" & num)
            cboxvacancier.AddItem cell
            Next
        End With
     
        With jourd
            num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil02.Range("f1:f" & num)
            jourd.AddItem cell
            Next
            jourd.Value = Format(Now(), "dd-mmm")
        End With
     
        With jourr
            num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil02.Range("f1:f" & num)
            jourd.AddItem cell
            Next
            jourr.Value = Format(Now(), "dd-mmm")
        End With
     
        With Heured
            num = Feuil80.Range("g1").End(xlDown).Row
            For Each cell In Feuil02.Range("g1:g" & num)
            jourd.AddItem cell
            Next
            Heured.Value = Format(Now(), "dd-mmm")
        End With
     
        With heurer
            num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil02.Range("f1:f" & num)
            jourd.AddItem cell
            Next
            heurer.Value = Format(Now(), "dd-mmm")
        End With
     
    'num = Feuil09.Range("c65000").End(xlUp).Row
    'cboxvacancier.RowSource = ("csv!c30:c" & num)
     
    'num = Feuil80.Range("f1").End(xlDown).Row
    'jourd.RowSource = ("comptheure!f1:f" & num)
    'jourd.Value = Format(Now(), "dd-mmm")
     
    'num = Feuil80.Range("g1").End(xlDown).Row
    'Heured.RowSource = ("comptheure!g1:g" & num)
    'Heured.Value = Format(Now(), "hh:mm")
     
    'num = Feuil80.Range("f1").End(xlDown).Row
    'jourr.RowSource = ("comptheure!f1:f" & num)
    'jourr.Value = Format(Now(), "dd-mmm")
     
    'num = Feuil80.Range("g1").End(xlDown).Row
    'heurer.RowSource = ("comptheure!g1:g" & num)
    'heurer.Value = Format(Now(), "hh:mm")
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Peu de choses à modifier (regarde ci-dessous). Toutefois, tu alimentes "jourd" et "jourr" à partir de la même plage. Je pense que c'est un copier coller à tort, non ? sinon, tu peux les alimenter dans la même boucle. Pareil dans la booucle commençant par la ligne :
    tu alimentes "jourd".
    Je n'ai rien modifié quand j'ai pensé qu'il pouvait y avoir une erreur. Sinon, regarde l'usage de la commande "With" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub UserForm_Initialize()
        Dim cell As Range, Num As Long
        Feuil25.Unprotect Password:=("8571")
        Feuil27.Unprotect Password:=("8571")
        Feuil60.Unprotect Password:=("8571")
     
        With cboxanim
            Num = Feuil02.Range("c14").End(xlDown).Row
            For Each cell In Feuil02.Range("c14:c" & Num)
                .AddItem cell
            Next
        End With
     
        With cboxvacancier
            Num = Feuil09.Range("c65000").End(xlUp).Row
            For Each cell In Feuil02.Range("c30:c" & Num)
                .AddItem cell
            Next
        End With
     
        With jourd
            Num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil02.Range("f1:f" & Num)
                .AddItem cell
            Next
            .Value = Format(Now(), "dd-mmm")
        End With
     
        With jourr
            Num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil02.Range("f1:f" & Num)
    '********************** c'est bien jourd ?
                jourd.AddItem cell
    '**********************
            Next
            .Value = Format(Now(), "dd-mmm")
        End With
     
        With Heured
            Num = Feuil80.Range("g1").End(xlDown).Row
            For Each cell In Feuil02.Range("g1:g" & Num)
                jourd.AddItem cell
            Next
            .Value = Format(Now(), "dd-mmm")
        End With
     
        With heurer
        Num = Feuil80.Range("f1").End(xlDown).Row
        For Each cell In Feuil02.Range("f1:f" & Num)
        jourd.AddItem cell
        Next
        .Value = Format(Now(), "dd-mmm")
        End With
     
        'num = Feuil09.Range("c65000").End(xlUp).Row
        'cboxvacancier.RowSource = ("csv!c30:c" & num)
     
        'num = Feuil80.Range("f1").End(xlDown).Row
        'jourd.RowSource = ("comptheure!f1:f" & num)
        'jourd.Value = Format(Now(), "dd-mmm")
     
        'num = Feuil80.Range("g1").End(xlDown).Row
        'Heured.RowSource = ("comptheure!g1:g" & num)
        'Heured.Value = Format(Now(), "hh:mm")
     
        'num = Feuil80.Range("f1").End(xlDown).Row
        'jourr.RowSource = ("comptheure!f1:f" & num)
        'jourr.Value = Format(Now(), "dd-mmm")
     
        'num = Feuil80.Range("g1").End(xlDown).Row
        'heurer.RowSource = ("comptheure!g1:g" & num)
        'heurer.Value = Format(Now(), "hh:mm")
    End Sub

  3. #3
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Effectivement, j'ai trouvé le moyen de réduire de la facon suivante, j'ai encore un peu de ma avec les boucles.
    Merci de m'avoir consacré un peu de temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub UserForm_Initialize()
    Dim cell As Range
    Feuil25.Unprotect Password:=("8571")
    Feuil27.Unprotect Password:=("8571")
    Feuil60.Unprotect Password:=("8571")
     
        With cboxanim
            num = Feuil02.Range("c14").End(xlDown).Row
            For Each cell In Feuil02.Range("c14:c" & num)
            cboxanim.AddItem cell
            Next
        End With
     
        With cboxvacancier
            num = Feuil09.Range("c65000").End(xlUp).Row
            For Each cell In Feuil02.Range("c30:c" & num)
            cboxvacancier.AddItem cell
            Next
        End With
     
        With jourd
            num = Feuil80.Range("f1").End(xlDown).Row
            For Each cell In Feuil80.Range("f1:f" & num)
            jourd.AddItem cell
            jourr.AddItem cell
            Next
            jourd.Value = Format(Now(), "dd-mmm")
            jourr.Value = Format(Now(), "dd-mmm")
     
        End With
     
        With Heured
            num = Feuil80.Range("g1").End(xlDown).Row
            For Each cell In Feuil80.Range("g1:g" & num)
            Heured.AddItem cell
            heurer.AddItem cell
     
            Next
            Heured.Value = Format(Now(), "hh:mm")
            heurer.Value = Format(Now(), "hh:mm")
        End With
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu manques aussi de pratique avec les "with". Si tu mets :
    pas la peine de répéter "cboxanim". Au lieu de :
    mets simplement :
    c'est la raison d'être de "with".

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    je viens un peu tard, mais tu peux éviter les boucles pour remplir tes listbox en utilisant la propriété "List":
    par exemple au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With cboxanim
            num = Feuil02.Range("c14").End(xlDown).Row
            For Each cell In Feuil02.Range("c14:c" & num)
            cboxanim.AddItem cell
            Next
        End With
    essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With cboxanim
        num = Feuil02.Range("c14").End(xlDown).Row
        malist = Feuil02.Range("c14:c" & num)
        .List = malist
    End With
    tu évites les boucles et donc tu vas plus vite.

  6. #6
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Un grand merci à tous pour le temps que vous avez bien voulu me consacrer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  2. Comment simplifier les beans Hibernate
    Par Dr@ke dans le forum JSF
    Réponses: 16
    Dernier message: 12/12/2007, 12h15
  3. Comment simplifier mon script ?
    Par MMO95 dans le forum Langage
    Réponses: 7
    Dernier message: 09/01/2007, 00h21
  4. [Makefile] Comment simplifier un Makefile compliqué
    Par bouba82 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 27/11/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo