Excel 2010 : Macro auto pour mise en forme
Hervé
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je débute en macro (j'enregistre de petites macro, mais je n'arrive pas à les écrire...). Voici ce que j'aimerais faire dans 1 de mes fichiers :
J'ai un gros fichier excel dans lequel j'aimerais remplacer de nombreuses mises en forme conditionnelles par une macro afin de réduire la taille du fichier et d'en améliorer les performances. Par ailleurs, j'utilise ce fichier sous excel 2010, mais je le partage, et il est donc succeptible d'être utilisé sous excel 2003 qui n'autorise que 3 mise en forme conditionnelles, ce qui n'est pas assez pour ce que j'en fait.
J'aimerais donc créer une macro qui fait ceci :
- elle se lance automatiquement dès l'ouverture du classeur (dans l'onglet appelé "planning")
- lorsqu'une cellule de la plage A1:AA200 reçoit la valeur texte "libre", la macro séléctionne cette cellule ainsi que les 3 cellules à sa droite
- elle colorie ces 4 cellules en jaune
- finalement, si la cellule qui contenait "libre" devient vide, je souhaite que les 4 cellules reviennent avec un fond transparent (comme avant l'application de la mise en forme)
Cela parait simple, mais j'ai vraiment du mal.
Si quelqu'un peut m'aider, ça serait vraiment super !
J'espère avoir été assez clair (avez vous besoin du fichier ?)
Merci d'avance,
Hervé
Je débute en macro (j'enregistre de petites macro, mais je n'arrive pas à les écrire...). Voici ce que j'aimerais faire dans 1 de mes fichiers :
J'ai un gros fichier excel dans lequel j'aimerais remplacer de nombreuses mises en forme conditionnelles par une macro afin de réduire la taille du fichier et d'en améliorer les performances. Par ailleurs, j'utilise ce fichier sous excel 2010, mais je le partage, et il est donc succeptible d'être utilisé sous excel 2003 qui n'autorise que 3 mise en forme conditionnelles, ce qui n'est pas assez pour ce que j'en fait.
J'aimerais donc créer une macro qui fait ceci :
- elle se lance automatiquement dès l'ouverture du classeur (dans l'onglet appelé "planning")
- lorsqu'une cellule de la plage A1:AA200 reçoit la valeur texte "libre", la macro séléctionne cette cellule ainsi que les 3 cellules à sa droite
- elle colorie ces 4 cellules en jaune
- finalement, si la cellule qui contenait "libre" devient vide, je souhaite que les 4 cellules reviennent avec un fond transparent (comme avant l'application de la mise en forme)
Cela parait simple, mais j'ai vraiment du mal.
Si quelqu'un peut m'aider, ça serait vraiment super !
J'espère avoir été assez clair (avez vous besoin du fichier ?)
Merci d'avance,
Hervé
A voir également:
- Excel 2010 : Macro auto pour mise en forme
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Déplacer colonne excel - Guide
1 réponse
bonjour
Dans le module de la feuille "planing" le code suivant semble correspondre à ton problème
bonne suite
Dans le module de la feuille "planing" le code suivant semble correspondre à ton problème
Option Explicit
Const PlageATester = "A1:AA200"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim li As Long, co As Long
Dim PlageAColorer As Range
If Not Intersect(Target, Range(PlageATester)) Is Nothing Then
li = Target.Row
co = Target.Column
Set PlageAColorer = Range(Cells(li, co), Cells(li, co + 3))
If Target = "libre" Then
PlageAColorer.Interior.ColorIndex = 6
Else
PlageAColorer.Interior.ColorIndex = xlNone
End If
End If
End Sub
bonne suite
Merci bcp pour votre réponse si rapide !
Votre macro marche vraiment super bien. Merci bcp.
Néanmoins, je n'avait pas précisé dans mon premier post que je travaillait sur des cellules fusionnées :
les séries de 4 cellules qui peuvent recevoir le texte libre (toujours dans la première) sont fusionnnées comme suit (sur 1 seule ligne de hauteur, mais avec une largeur variable) :
1ière cellule = 5 cellules fusionnées
2ème cellule = 4 cellules fusionnées
3ème cellule = 4 cellules fusionnées
4ème cellule = 4 cellules fusionnées
Votre macro fonctionne très bien pour mettre la couleur, mais par contre, lorsque je supprime "libre", le système me renvoie un message d'erreur :
"Erreur d'éxécution '13':
Incomptabilité de type
Avez vous une idée pour corriger cela ?
Merci d'avance si vous pouvez encore m'aider,
Cdt,
Hervé
PS : je ne vais pas être très dispo jusqu'à lundi soir, donc je risque de ne pas répondre rapidement si vous poster quelque chose ce we.
si vous travaillez avec des cellules fusionnées, alors il est certain que vous allez souvent rencontrer des problèmes avec vos macros.
Défussionnez vos cellules, et essayez plutôt de centrer vos donnez sur les cellules.
Sous 2007 :
- Onglet Accueil, sous-onglet Alignement, cliquez sur la petite flèche en bas à droite.
- Dans la boîte de dialogue qui s'ouvre, onglet Alignement, choisir l'alignement horizontal "Centré sur plusieurs colonnes".
Cordialement.