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

VBA Access Discussion :

Aide pour simplification d'un code VBA [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Assistante
    Inscrit en
    Novembre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Assistante
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 49
    Par défaut Aide pour simplification d'un code VBA
    Bonjour

    Avec le peu de connaissances que j'ai en VBA j'ai réussi à faire fonctionner le code ci-dessous (pour masquer et décaler les champs si ils sont vides), pouvez vous m'aider pour simplifier ce code ?

    En source il y a une requête qui est elle même issue d'une requête analyse croisée, je voudrais que toutes les tailles qui n'existent pas encore soient prises en compte sans pour autant toutes les citer dans le code, est ce possible ?

    Merci beaucoup

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    Private Sub Report_Activate()
    If Not IsNull(Me.Controls("02A").Value) Then
    Me.Controls("02A").Visible = True
    Me.Controls("Étiquette_02A").Visible = True
     
    Me.Controls("02A").Width = 1000
    Me.Controls("Étiquette_02A").Width = 1000
     
    End If
     
    If Not IsNull(Me.Controls("04A").Value) Then
    Me.Controls("04A").Visible = True
    Me.Controls("Étiquette_04A").Visible = True
     
    Me.Controls("04A").Width = 1000
    Me.Controls("Étiquette_04A").Width = 1000
    End If
     
     
    If Not IsNull(Me.Controls("06A").Value) Then
    Me.Controls("06A").Visible = True
    Me.Controls("06A_Étiquette").Visible = True
     
    Me.Controls("06A").Width = 1000
    Me.Controls("06A_Étiquette").Width = 1000
    End If
     
    If Not IsNull(Me.Controls("08A").Value) Then
    Me.Controls("08A").Visible = True
    Me.Controls("08A_Étiquette").Visible = True
     
    Me.Controls("08A").Width = 1000
    Me.Controls("08A_Étiquette").Width = 1000
    End If
     
     
    If Not IsNull(Me.Controls("10A").Value) Then
    Me.Controls("10A").Visible = True
    Me.Controls("10A_Étiquette").Visible = True
     
    Me.Controls("10A").Width = 1000
    Me.Controls("10A_Étiquette").Width = 1000
     
    End If
     
    If Not IsNull(Me.Controls("12A").Value) Then
    Me.Controls("12A").Visible = True
    Me.Controls("12A_Étiquette").Visible = True
     
    Me.Controls("12A").Width = 1000
    Me.Controls("12A_Étiquette").Width = 1000
     
    End If
     
     
    If Not IsNull(Me.Controls("XS").Value) Then
    Me.Controls("XS").Visible = True
    Me.Controls("XS_Étiquette").Visible = True
     
    Me.Controls("XS").Width = 1000
    Me.Controls("XS_Étiquette").Width = 1000
     
     
    End If
     
    If Not IsNull(Me.Controls("S").Value) Then
    Me.Controls("S").Visible = True
    Me.Controls("S_Étiquette").Visible = True
     
    Me.Controls("S").Width = 1000
    Me.Controls("S_Étiquette").Width = 1000
    End If
     
    If Not IsNull(Me.Controls("M").Value) Then
    Me.Controls("M").Visible = True
    Me.Controls("M_Étiquette").Visible = True
     
    Me.Controls("M").Width = 1000
    Me.Controls("M_Étiquette").Width = 1000
    End If
     
     
    If Not IsNull(Me.Controls("L").Value) Then
    Me.Controls("L").Visible = True
    Me.Controls("L_Étiquette").Visible = True
     
    Me.Controls("L").Width = 1000
    Me.Controls("L_Étiquette").Width = 1000
    End If
     
    If Not IsNull(Me.Controls("XL").Value) Then
    Me.Controls("XL").Visible = True
    Me.Controls("XL_Étiquette").Visible = True
     
    Me.Controls("XL").Width = 1000
    Me.Controls("XL_Étiquette").Width = 1000
    End If
     
    If Not IsNull(Me.Controls("XXL").Value) Then
    Me.Controls("XXL").Visible = True
    Me.Controls("XXL_Étiquette").Visible = True
     
    Me.Controls("XXL").Width = 1000
    Me.Controls("XXL_Étiquette").Width = 1000
    End If
     
     
    If Not IsNull(Me.Controls("3XL").Value) Then
    Me.Controls("3XL").Visible = True
    Me.Controls("3XL_Étiquette").Visible = True
     
    Me.Controls("3XL").Width = 1000
    Me.Controls("3XL_Étiquette").Width = 1000
    End If
     
    If Not IsNull(Me.Controls("4XL").Value) Then
    Me.Controls("4XL").Visible = True
    Me.Controls("4XL_Étiquette").Visible = True
     
    Me.Controls("4XL").Width = 1000
    Me.Controls("4XL_Étiquette").Width = 1000
    End If
     
     
    If Not IsNull(Me.Controls("5XL").Value) Then
    Me.Controls("5XL").Visible = True
    Me.Controls("5XL_Étiquette_5XL").Visible = True
     
    Me.Controls("5XL").Width = 1000
    Me.Controls("5XL_Étiquette").Width = 1000
    End If
     
    End Sub

  2. #2
    Membre averti
    Femme Profil pro
    Assistante
    Inscrit en
    Novembre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Assistante
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 49
    Par défaut
    J'ai essayé de simplifier comme ci-dessous mais il y a une erreur et je ne suis pas sûre que l'étiquette du champs va bien être invisible si le champs correspondant et vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Report_Activate()
     
    Dim ctl As Control
    For Each ctl In Me.Controls
    If Not (IsNull(ctl.Value)) Then
    ctl.Visible = True
    ctl.Width = 1000
     
    End If
    Next ctl
     
     
    End Sub

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    T'es dans la bonne direction.
    Par contre 2 soucis :
    1- l'erreur est levée je pense parce que les étiquettes n'ont pas la propriété Value. Donc ctl.Value lève une erreur quand c'est une étiquette. Il faudrait combiner le test avec le type du contrôle TextBox.
    2- Le nommage de tes étiquettes n'est pas uniforme. Pour 2,4 et 6, tu mets Etiquettes_NomTextBox et ainsi de suite. Mais pour les autres tu mets NomTextBox_Etiquette. Il faudra les harmoniser pour que le code puisse être simplifié de cette façon :

    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
    Private Sub Report_Activate()
     
    Dim ctl As Control
    For Each ctl In Me.Controls
         If TypeOf ctl is TextBox Then                                 'Vérifier que c'est un textbox
              If Not IsNull(ctl.Value) Then                              'Si sa valeur est nulle
                   ctl.Visible = True
                   ctl.Width = 1000
                   Me(ctl.Name & "_Etiquette").Visible = True       'Attribuer les mêmes propriétés à l'étiquette correspondante
                   Me(ctl.Name & "_Etiquette").Width = 1000       
              End If 
         End If
    Next ctl
     
    End Sub
    Attention, code non testé.

    Cordialement,

  4. #4
    Membre averti
    Femme Profil pro
    Assistante
    Inscrit en
    Novembre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Assistante
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 49
    Par défaut Parfait
    C'est parfait, merci !

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir Sandrine,

    N'oublie pas de mettre en "RESOLU" si c'est bon.

    Bonne continuation et cordialement.

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

Discussions similaires

  1. [XL-2010] Aide pour modification d'un code VBA (Fonction Ping sous Excel)
    Par osiris13010 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/07/2012, 14h16
  2. [XL-2003] Aide pour erreur dans un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/05/2009, 07h48
  3. Outil d'aide pour le refactoring de code
    Par progfou dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 14/03/2008, 14h04
  4. Demande d'aide pour un problème de code source sur devC++
    Par Rickantonais dans le forum Débuter
    Réponses: 28
    Dernier message: 01/08/2007, 14h09
  5. [VBA-E] Aide pour simplification de mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 11h34

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