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 :

Detecter si une cellule possede une mise en forme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Par défaut Detecter si une cellule possede une mise en forme
    Bonjour,

    le probleme est de detecter si une cellule possede une mise en forme (quelconque), par exemple si A1 est en italique ou en 16 ou en rouge ou avec des bordures ect, la fonction renvoie vrai, si la cellule ne possede pas de mise en forme donc au maximum elle a une valeur (texte) le fonction renvoie non.

    Merci !!

    Hedi

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Regarde ceci si ça convient (à mettre dans un module standard) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function MFC_EXISTE(Plage As Range)
     
        Dim MFC As Long
     
        On Error Resume Next
        MFC = Plage.FormatConditions(1).Type
     
        MFC_EXISTE = IIf(Err.Number <> 0, False, True)
     
    End Function
    Tu peux l'utiliser dans une cellule du tableur de la manière suivante :
    ou dans ton code comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Test()
     
        MsgBox MFC_EXISTE(Range("B3"))
     
    End Sub
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Par défaut
    Bonjour, helas non, votre fonction renvoie faux que le texte soit en gras ou pas.

    merci pour votre aide

    Jedi

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Désolé, je suis parti sur une mise en forme conditionnelle mais pas sur une mise en forme "manuelle" !
    Dans ce cas, il faut tester tout ce qui n'est pas de mise en forme de base, Font (gras, italique, souligné), couleur de fond, couleur de police, taille de police, nom de la police, bordures, etc...
    Voici un exemple non exhaustif :
    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
     
    Function MFC_EXISTE(Plage As Range) As Boolean
     
        Dim Cel As Range
        Dim MFC As Long
     
        Application.Volatile
     
        For Each Cel In Plage
     
            If Cel.Font.Bold = True Or Cel.Font.Italic = True Or Cel.Font.Underline <> xlNone Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.Font.Color <> 0 Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.Font.Size <> Application.StandardFontSize Or Cel.Font.Name <> Application.StandardFont Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.Interior.ColorIndex <> xlNone Or Cel.Interior.Pattern <> xlNone Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.Borders(5).LineStyle <> xlNone Or Cel.Borders(6).LineStyle <> xlNone Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.Borders(7).LineStyle <> xlNone Or Cel.Borders(8).LineStyle <> xlNone _
                Or Cel.Borders(9).LineStyle <> xlNone Or Cel.Borders(10).LineStyle <> xlNone Then
                MFC_EXISTE = True
                Exit For
            End If
     
            If Cel.NumberFormat <> "General" Then
                    MFC_EXISTE = True
                    Exit For
            End If
     
            On Error Resume Next
            MFC = Plage.FormatConditions(1).Type
     
            If Err.Number = 0 Then
                    MFC_EXISTE = True
                    Exit For
            End If
     
        Next Cel
     
    End Function
    Hervé.

  5. #5
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Par défaut
    Bonjour, merci pour votre aide, j'ai contourné le probleme.

    Hedi

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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