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 :

Lister les MFC d'un classeur [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut Lister les MFC d'un classeur
    Bonjour,

    J'aimerai savoir s'il existe une technique pour lister les différentes MFC d'un classeur, avec leurs différentes caractéristiques.
    Cherché, désespérément, sans résultat probant.

    Merci pour vos lumières.

    Bonne journée,
    Cordialement.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 855
    Points : 28 774
    Points
    28 774
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une bonne connaissance des fonctionnalités d'excel et l'enregistreur de macros fait le reste.
    Pour sélectionner les cellules ayant une mise en forme conditionnelle, il existe une boîte de dialogue Atteindre (raccourci clavier F5)

    Nom : Dlg - GoTo Conditional Formatting.png
Affichages : 58
Taille : 12,8 Ko

    Voir mes billets sur cette boîte de dialogue


    En utilisant cette boîte de dialogue à l'aide de l'enregistreur de macro, on obtiendra cette ligne d'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.SpecialCells(xlCellTypeAllFormatConditions).Select
    Comme il faut éviter la méthode Select, nous corrigerons par exemple par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub T()
      Dim sht As Worksheet
      Dim rngConditFormatting As Range
      Set sht = ThisWorkbook.Worksheets("V-Valeurs")
      Set rngConditFormatting = sht.Range("A1").SpecialCells(xlCellTypeAllFormatConditions)
      Debug.Print rngConditFormatting.Address
      Set rngConditFormatting = Nothing
      Set sht = Nothing
    End Sub
    Nous avons déjà là, un début de code qui nous renvoie dans la variable objet rngConditFormatting toutes les cellules ayant une mise en forme conditionnelle
    Il reste à parcourir cellule par cellule pour obtenir les propriétés utilisées pour cette mise en forme conditionnelle (voir enregistreur de macros)

    Une fois que la procédure fonctionne pour une feuille, on l'utilise pour chaque feuille en faisant une boucle comme par exemple

    Code de la fonction qui renverra un objet Range en fonction de l'argument pType (xlCellTypeAllFormatConditions pour ce qui nous concerne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function GetSpecialCells(oSheet As Worksheet, pType As XlCellType) As Range
      On Error Resume Next
      Set GetSpecialCells = oSheet.Range("A1").SpecialCells(pType)
      On Error GoTo 0
    End Function
    Exemple de la procédure qui l'invoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub T()
      Dim sht As Worksheet
      Dim rngConditFormatting As Range
      For Each sht In ActiveWorkbook.Worksheets
        Set rngConditFormatting = GetSpecialCells(sht, xlCellTypeAllFormatConditions)
        If Not rngConditFormatting Is Nothing Then
           Debug.Print rngConditFormatting.Address(External:=True)
         Else
           Debug.Print "Pas de MFC dans la feuille " & sht.Name
        End If
      Next
      Set rngConditFormatting = Nothing
      Set sht = Nothing
    End Sub
    [EDIT]
    Une erreur dans la procédure GetSpecialCells. En ligne 3, il faut avoir l'argument pType et pas xlCellTypeAllFormatConditions
    Correction faite dans la procédure précédemment publiée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function GetSpecialCells(oSheet As Worksheet, pType As XlCellType) As Range
      On Error Resume Next
      Set GetSpecialCells = oSheet.Range("A1").SpecialCells(pType)
      On Error GoTo 0
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    Bonjour Philippe,

    Merci pour la réponse, je regarde cela et te fais un retour.
    Bonne fin de journée.
    Cordialement.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    re,

    Merci, cela répond à la première partie de mon problème. Est-il possible d'obtenir la liste et le détail des différentes MFC ?
    Ceci pour voir les redondances dues aux différents copier-coller et autres manip des utilisateurs.
    Cordialement.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 855
    Points : 28 774
    Points
    28 774
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par rapport à mes explications, que vous manque t'il pour avancer.
    Qu'avez-vous déjà écrit comme procédure depuis ma réponse et où avez-vous un problème ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    Bonsoir,
    le résultat de ces deux macros m'indique les plages sur lesquelles se trouvent des MFC. J'aimerai obtenir les caractéristiques de ces MFC ainsi que la ou les plages où elles s'appliquent.
    J'ai tenté l'enregistreur de macro, mais il ne me renvoie rien.
    Ma demande est peut être loufoque.
    Cordialement.
    PS: les deux liens de ton post ne sont pas valides.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 855
    Points : 28 774
    Points
    28 774
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    PS: les deux liens de ton post ne sont pas valides.
    Effectivement, il y avait un problème. C'est maintenant arrangé. Merci de me l'avoir signalé

    J'ai tenté l'enregistreur de macro, mais il ne me renvoie rien
    Voir ci-dessous ce que me renvoie l'enregistreur de macros lors de la création d'une MFC avec comme règle Appliquer une mise en forme uniquement aux cellules qui contiennent mais il est vrai qu'ensuite une deuxième règle ne m'a donné aucun code (Excel 365)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub PutFormatCondition()
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=50"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .Color = -16776961
        .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub
    Pour connaître le nombre de règles appliqué à une cellule, il faut utiliser la propriété Count de la collection FormatConditions
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Range("C5").FormatConditions.Count
    J'aimerai obtenir les caractéristiques de ces MFC ainsi que la ou les plages où elles s'appliquent.
    Il faut donc lire chaque propriété possible de l'objet FormatCondition MFC (ex Font.Bold, Font.Italic, etc.)
    Pour connaître la plage où elle s'applique, c'est la propriété AppliesTo
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    Bonjour Philippe,

    Merci pour les explications. J'ai tenté de les mettre en pratique mais, n'étant pas un foudre de guerre en VBA, j'atteins vite mes limites.

    J'arrive bien à compter le nombre de MFC mais n'arrive pas à faire ressortir leur caractéristiques. Il semble que certaines de celles ci ne soit pas prises en compte par l'enregistreur de macro, donc difficile de tenter de les récupérer, du moins à mon niveau. (Cf macro 2 du fichier joint, tentative de MFC sur la plage D8:AH9)

    Merci pour le temps passé, mais je laisse tomber, cela à l'air bien trop lourd à mettre en place pour l'utilisation escomptée.

    Bonne continuation, encore merci pour les indications qui me serviront sans doute sur d'autres dossiers.

    Cordialement.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Lister les macros d'un classeur excel
    Par fffttt dans le forum WinDev
    Réponses: 2
    Dernier message: 05/06/2015, 09h48
  2. Lister les macros du classeur
    Par oiapoque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/01/2009, 23h14
  3. Lister les procédures d'un classeur
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 07/10/2008, 23h00
  4. Lister les combobox d'un classeur
    Par windsor dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2007, 20h39
  5. [MFC]Lister les sources de données ODBC
    Par Cédric_07 dans le forum MFC
    Réponses: 11
    Dernier message: 23/03/2006, 11h20

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