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 :

Formatage sous condition dans des tables Excel au travers d'Access.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 125
    Par défaut Formatage sous condition dans des tables Excel au travers d'Access.
    (Un peu compliqué à placer ce message, cela concerne deux programme (VBA Access et VBA Excel).

    Bonjour,

    J'utilise Excel au travers d'access. C'est pas trop compliqué mais j'ai un petit soucis. Cela tiens plus du VBA Excel que du VBA Access.
    Ma <formule1> de la commande <FormatConditions.Add> est-elle correcte ?
    Je dois créer une condition de formatage dans une plage sur une cellule testée en fonction de sa valeur.
    Test : Si la valeur absolue de la cellule est supérieur ou égale à 1, il faut mettre cette cellule en surbrillance. (Et tester toute la plage)

    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
    Private Sub VBATest_Click()
    
        Dim xlApp As excel.Application:   Dim xlBook As excel.Workbook:   Dim xlSheet As excel.Worksheet:   Dim xlRange As excel.Range: Dim strArea As String
    
        Set xlApp = CreateObject("Excel.Application"):   Set xlBook = xlApp.Workbooks.Open("C:\Users\Desktop\Fichier.xlsx")
        Set xlSheet = xlBook.Sheets("Sheet1"):   Set xlRange = xlSheet.Columns("G:J")
        strArea = xlRange.Address(False, False)
    
        xlRange.FormatConditions.Delete
        xlRange.FormatConditions.Add Type:=xlExpression, Formula1:="=ABS(" & strArea & ")>=1"
        xlRange.FormatConditions(xlRange.FormatConditions.Count).SetFirstPriority
        xlRange.FormatConditions(1).Interior.Color = 65535
        xlRange.FormatConditions(1).StopIfTrue = True
    
        xlBook.Save: xlBook.Close:   Set xlBook = Nothing
        xlApp.Quit:   Set xlApp = Nothing
    
    End Sub
    Je dois faire cela de manière automatique au travers VBA car Access est déguisé en programme "Push Button" pour les utilisateurs qui ne connaissent pas Office.

    Nom : Image 1.jpg
Affichages : 140
Taille : 27,7 Ko

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 371
    Par défaut
    Bonjour,

    Une façon de faire:
    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
    Private Sub VBATest_Click()
     
        Dim xlApp As Excel.Application, xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet, xlRange As Excel.Range
     
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("C:\Users\Desktop\Fichier.xlsx")
        Set xlSheet = xlBook.Sheets("Feuil1")
        Set xlRange = xlSheet.Columns("G:J")
        With xlRange
            .FormatConditions.Delete
            .FormatConditions.Add _
                Type:=xlExpression, _
                Formula1:="=ABS(G1)>=1"
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
            .FormatConditions(1).Interior.Color = 65535
            .FormatConditions(1).StopIfTrue = True
        End With
     
        xlBook.Save
        xlBook.Close
        Set xlBook = Nothing
        xlApp.Quit
        Set xlApp = Nothing
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 125
    Par défaut
    EricDgn,

    Tu mérite absolument ton titre de membre émérite !
    Solution impeccable et très logique. J'y étais presque. Il fallait donc tout simplement apposer la formule pour la première case. Les autres suivent automatiquement.
    Tu es le premier à me donner la solution depuis mes recherches sur de nombreux sites.

    Un tout grand merci.

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

Discussions similaires

  1. Macro qui va chercher des conditions dans une table
    Par piflechien73 dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/09/2009, 22h29
  2. Ne pas faire apparaitre les titres des sous figures dans la table des figures?
    Par Contact2012 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 7
    Dernier message: 27/04/2009, 17h39
  3. Réponses: 7
    Dernier message: 24/04/2008, 11h53
  4. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  5. Réponses: 1
    Dernier message: 16/09/2007, 14h14

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