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 :

BackColor suivant procédure IF,THEN,ELSE


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut BackColor suivant procédure IF,THEN,ELSE
    Tout est dit dans l'Intitulé de ce post:

    Selon la certification d'un produit (normes BS EN ISO) j'aimerais changer la couleur de fond en rouge ou en vert.

    Voici mon code:
    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 Certification_AfterUpdate()
    
    'Condition(s) à respectée(s), utilisation de IF...THEN...ELSE
    If [BS EN Specification].Value = "EN 1600" Or "EN ISO 3580" Or "EN ISO 14172" Or "EN ISO 14343" _
    Or "EN ISO 17633" Or "EN ISO 17634" Or "EN ISO 18274" Or "EN ISO 21952" Then
    Me![BS EN Specification].BackColor = 65280
    Else
    Me![BS EN Specification].BackColor = 255
    'Fermeture de la condition IF
    End If
    
    'Cloture de la SUB
    End Sub
    Ce code est en "Procédure événementielle " sur " Après MaJ" pour le champ BS EN Specification du sous-formulaire SF_CELabelling.
    Ma macro de miseà jour se situe dans mon formulaire principal (celui contenant SF_CELabelling ) sur un bouton commande.

    Aucune couleur ne s'affiche en fond. Il y a t-il un manquement à mon code ?

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Bonjour,
    Premièrement, ton code n'est pas bon. Tu ne peux pas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If maVariable = X Or Y Or Z Then...
    Il faut que l'expression Y ou Z renvoie un booléen.
    Dans ce cas il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case maVariable
        Case X
            ' Instructions si maVariable=X
        Case Y
            'Instructions si maVariable=Y
        Case Z
            'Instructions si maVariable=Z
        Case Else
            'Instructions dans tous les autres cas
    End Select

    Deuxièmement, tu ne peux pas modifier la couleur d'une section ou d'un contrôle de formulaire s'il s'agit d'un formulaire en mode continu : ça change la couleur de fond pour tous les enregistrements.

    NB : Pour Info tu as aussi la fonction RGB(X, Y, Z) qui permet de récupérer une couleur par son code RVB. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MonContrôle.Backcolor = RGB(255, 0, 0)
    rendra ton contrôle rouge

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut
    Merci, j'avais pensé à utiliser le Select Case mais je ne savais pas comment appeler tous les autres cas et tu me l'a marqué noir sur blanc et Case Else merci bien

    Concernant la couleur le RGB marche, mais je crois quel'on peut également prendre le code couleur ,non ?

    Par exemple le rouge =255 le vert =65280 etc... ??
    Ou alors utiliser la bibliothèque préexistante pour le rouge prendre =vbRed ??

    Donc je dois utiliser la mise en forme conditionnelle pour un formulaire en continu ??

    Merci de ton aide en tout cas

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Citation Envoyé par Alexbreizhst Voir le message
    mais je crois quel'on peut également prendre le code couleur ,non ?

    Par exemple le rouge =255 le vert =65280 etc... ??
    Ou alors utiliser la bibliothèque préexistante pour le rouge prendre =vbRed ??
    Oui tu as tout à fait raison : les constantes vbRed, vbBlack, etc. stockent des valeurs numériques équivalentes aux codes couleur. La fonction RGB est pratique dans le sens où la plupart des logiciels de dessin (Photoshop, Paint, etc.) peuvent te donner les composantes RVB des couleurs d'une image. Pratique pour reprendre la charte graphique d'une entreprise par exemple

    La mise en forme conditionnelle est une solution mais a ses limites (ducoup je ne l'utilise depuis longtemps. Voici un article sur la MFC

    Sinon j'utilise plutôt ce genre de méthodes maintenant : MFC illimitée grâce aux spreadsheets

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut
    Sans avoir encore regardé tes liens, j'ai omis de dire que je suis un néophyte en VBA et ne parlons même pas des autres langage mais je vais m'accrocher !

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Ne t'inquiète pas j'ai commencé à partir de zéro alors que j'étais en formation. Tu as toutes les ressources qu'il te faut sur ce site que tu peux compléter avec d'autres sites connus (ou à connaître si tu débutes en programmation).

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Citation Envoyé par Alexbreizhst Voir le message
    Merci, j'avais pensé à utiliser le Select Case mais je ne savais pas comment appeler tous les autres cas et tu me l'a marqué noir sur blanc et Case Else merci bien
    A savoir : Si tu places ton curseur sur un mot-clé dans le VBE (éditeur de code) et que tu appuies sur F1, l'aide d'ACCESS s'ouvre et t'affiche l'article correspondant au mot-clé avec ça tu aurais vu tout de suite quelle était la syntaxe

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut
    Il faut que je me force à utiliser F1 en effet !

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut
    Voici le code que j'ai adapté à mon problème. L'éditeur n'affiche pas d'erreur et c'est très bien mais mon tableau ne m'affichent rien et ça c'est moins bien

    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
    Option Compare Database
    
    Public Sub PreparationTest()
        
    'Déclaration de la variable
    Dim spdTableau As OWC10.Spreadsheet
        
    ' Affectation de la variable
    Set spdTableau = Me.Spreadsheet_Test.Object
        
    'Préparation de l'aspect
    With spdTableau
        .DisplayToolbar = False                      ' on désactive la barre d'outils        
        With .Windows(1)
         .DisplayHorizontalScrollBar = False      ' on désactive la barre de défilement horizontale            
         .DisplayWorkbookTabs = False             ' on désactive la visualisation des onglets
         .DisplayColumnHeadings = False           ' on désactive les entêtes de colonnes
         .DisplayRowHeadings = False              ' on désactive les entêtes de lignes
        End With        
    End With
    End Sub
    Public Sub RemplirFeuille()
    
    'Déclaration des variables
    Dim spdTableau As OWC10.Spreadsheet
    Dim Rcdset As DAO.Recordset
    Dim strSQL As String
    Dim i As Integer
        
    'Affectation des variables
    Set spdTableau = Me.Spreadsheet_Test.Object
    strSQL = "SELECT Table_Product.Product, Table_Size.Size, Table_BSEN.[BS EN Specification]" & _
    "FROM Table_Size INNER JOIN (Table_BSEN INNER JOIN Table_Product ON" & _
    "Table_BSEN.[No BS EN] = Table_Product.[Code BS EN]) ON Table_Size.[No Size] = Table_Product.[Code Size];"
    
    Set Rcdset = CurrentDb.OpenRecordset(strSQL)
        
    'On vide la feuille de toute données
        spdTableau.Cells.Delete
        spdTableau.Windows(1).FreezePanes = False
        
    'Choix des entêtes de colonnes
        With spdTableau
            .Range("A1").Value = "Product"
            .Range("B1").Value = "Size"
            .Range("C1").Value = "BS EN Specification"
        End With
        
        'Couleur de l'entête des colonnes
        spdTableau.Range("A1").Interior.Color = RGB(175, 175, 175)
        spdTableau.Range("B1").Interior.Color = RGB(175, 175, 175)
        spdTableau.Range("C1").Interior.Color = RGB(175, 175, 175)
        
        'On fixe volets pour entête fixe
        spdTableau.Range("A2").Select
        spdTableau.Windows(1).FreezePanes = True
        
        'Remplissage de la feuille
        i = 2
        While Not Rcdset.EOF
            With spdTableau
                .Range("A" & i).Value = Rcdset("Product")
                .Range("B" & i).Value = Rcdset("Size")
                .Range("C" & i).Value = Rcdset("BS EN Specification")
    
            End With        i = i + 1
            Rcdset.MoveNext    Wend
        
        'Forme
        With spdTableau.Range("A1" & spdTableau.Range("A1").End(xlDown).Row)
            .Columns.AutoFit
            .Borders.LineStyle = xlContinuous
        End With    
        'Libération des variables
        Rcdset.Close
        Set Rcdset = Nothing
        Set spdTableau = Nothing  
    End Sub
    Public Sub CouleurRecordset()
    
        
         ' Délaration des variables
        Dim spdTableau As OWC10.Spreadsheet
        Dim i As Integer
        
        ' Affectation des variables
        Set spdTableau = Me.Spreadsheet_Test.Object
        
        ' Condition et mise en forme
        For i = 2 To spdTableau.Range("A2").End(xlDown).Row
            Select Case spdTableau.Range("A" & i).Value
                Case "EN 1600"
                spdTableau.Range("A" & i).Interior.Color = RGB(0, 255, 0) 'couleur vert
                Case "EN ISO 3580"
                spdTableau.Range("A" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 14172"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 14343"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 17633"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 17634"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 18274"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case "EN ISO 21952"
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(0, 255, 0)
                Case Else
                spdTableau("A" & i & ":E" & i).Interior.Color = RGB(255, 0, 0) 'couleur rouge
    
            End Select
        Next i
        
        'Libération des variables
        Set spdTableau = Nothing
    
    End Sub

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

Discussions similaires

  1. [Débutant] if...then...else
    Par jive dans le forum ASP
    Réponses: 5
    Dernier message: 16/09/2005, 14h11
  2. [TagLib] Structure if then else
    Par mush_H dans le forum Taglibs
    Réponses: 5
    Dernier message: 19/07/2005, 15h31
  3. If Then Else
    Par Piout dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 24/02/2005, 16h09
  4. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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