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 :

Problème de fonctionnement d'une macro de formats personnalisés [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    employé administratif
    Inscrit en
    Mai 2025
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2025
    Messages : 27
    Par défaut Problème de fonctionnement d'une macro de formats personnalisés
    Bonjour, je n'arrive pas à faire fonctionner cette macro.
    Cette macro a pour but de modifier les caractéristiques d'affichage en fonction du contenu : le gras, l'italique, le soulignement, la police et la taille de caractère.

    Sub MiseEnEvidence()

    Action.Execute MiseEnEvidence Until ActiveCell=""
    DependingOn.Case ActiveCell
    Case Is >= 10
    Selection.Police.IndexColor = 3
    Selection.Police.Bold = True
    Case 5 To 9
    Selection.Police.Underline = xlMono
    Case 1 To 4
    Selection.Police.Size = 18
    Case 0
    Selection.Police.IndexColor = 2
    End DependingOn
    ActiveCell.Shift(1, 0).Active
    Loop

    End Sub

  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
    13 186
    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 : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf erreur de ma part, ce n'est pas du VBA mais sans doute les anciennes macro 4
    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 averti
    Homme Profil pro
    employé administratif
    Inscrit en
    Mai 2025
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2025
    Messages : 27
    Par défaut
    oui, c'est vrai, ce n'est pas du VBA, mais c'est une macro quand-même.

  4. #4
    Membre averti
    Homme Profil pro
    employé administratif
    Inscrit en
    Mai 2025
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2025
    Messages : 27
    Par défaut
    Solution trouvée :

    Public Sub MiseEnEvidenceOptimisee()
    Application.ScreenUpdating = False
    ' Définir la feuille active et la cellIule de départ
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ' Boucle sur les cellIules à partir de la cellIule active vers le bas
    Dim cellI As Range
    For Each cellI In ws.Range(ActiveCell, ws.Cells(ws.Rows.Count, ActiveCell.Column).End(xlUp))
    If IsEmpty(cellI.Value) Then Exit For

    Select Case cellI.Value
    Case Is >= 10
    With cellI.Font
    .ColorIndex = 3 ' Rouge
    .Bold = True
    End With
    Case 5 To 9
    cellI.Font.Underline = xlUnderlineStyleSingle ' Soulignement
    Case 1 To 4
    cellI.Font.Size = 18 ' Taille de police
    Case 0
    cellI.Font.ColorIndex = 2 ' Vert
    End Select
    Next cellI
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Hello,

    Avec la balise Code (#) et de l'indentation, ce sera mieux:
    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
    Public Sub MiseEnEvidenceOptimisee()
    	Application.ScreenUpdating = False
    	' Définir la feuille active et la cellIule de départ
    	Dim ws As Worksheet
    	Set ws = ActiveSheet
     
    	' Boucle sur les cellIules à partir de la cellIule active vers le bas
    	Dim cellI As Range
    	For Each cellI In ws.Range(ActiveCell, ws.Cells(ws.Rows.Count, ActiveCell.Column).End(xlUp))
    		If IsEmpty(cellI.Value) Then Exit For
     
    		Select Case cellI.Value
    		Case Is >= 10
    			With cellI.Font
    				.ColorIndex = 3 ' Rouge
    				.Bold = True
    			End With
    		Case 5 To 9
    			cellI.Font.Underline = xlUnderlineStyleSingle ' Soulignement
    		Case 1 To 4
    			cellI.Font.Size = 18 ' Taille de police
    		Case 0
    			cellI.Font.ColorIndex = 2 ' Vert
    		End Select
    	Next cellI
    	Application.ScreenUpdating = True
    End Sub
    Note:
    La boucle For s'arrête dès qu'une cellule est vide, as-tu la garantie qu'il n'y aura jamais de cellule vide en plein milieu de la colonne ?

  6. #6
    Membre averti
    Homme Profil pro
    employé administratif
    Inscrit en
    Mai 2025
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2025
    Messages : 27
    Par défaut
    oui, dans le cas présent, il n'y aura pas de case vide à l'intérieur de la colonne, merci pour votre aide.

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

Discussions similaires

  1. [XL-2010] Fonction WeekDay fonctionne sur une macro, pas dans une autre
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2014, 18h10
  2. [XL-2003] Problème de fonctionnement d'une Macro
    Par jphflo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2012, 22h29
  3. [XL-2002] Difficultés pour le fonctionnement d'une macro
    Par chti'me dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/09/2009, 15h09
  4. Fonctionnement d'une macro
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/12/2008, 18h22
  5. Mauvais fonctionnement d'une macro d'enregistrement
    Par mbellemax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2007, 18h48

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