Macro mise en forme sous excel
Résolu
sfab41
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis néophyte en terme de programmation mais j'aimerais faire une macro qui me permette de créer une mise en forte personnalisée, au même titre que ce qui est fait sous excel via Format/Cellule/Nombre/Personnalisé.
La seule différence qui fait que je ne peux pas passer par cette méthode c'est que je voudrais que cette mise en forme dépende du contenu d'une cellule qui peux être modifiée.
Je m'explique:
- J'ai créé une trame de compte avec en cellule B1 le mois en cours (exemple "Juin")
- En plage B10 à B30, il y a les jours des opérations effectuées (exemple "10" du mois)
Mon but est donc d'avoir Le contenu de "B1", à savoir "Juin" qui vient s'ajouter au contenu de la cellule pour avoir ainsi "10 Juin".
J'ai donc ceci de créé:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B10:B30,I10:I12,I18:I20"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Target.Value = Target.Value & " " & Cells.Range("B1").Text
Application.EnableEvents = True
End If
End Sub
Le problème est qu'avec cette macro si j'ouvre ma trame de comptes vierge avec des dates pré-rentrées, la modification ne se fait pas automatiquement.
Merci de vous pencher sur mon cas.
Je suis néophyte en terme de programmation mais j'aimerais faire une macro qui me permette de créer une mise en forte personnalisée, au même titre que ce qui est fait sous excel via Format/Cellule/Nombre/Personnalisé.
La seule différence qui fait que je ne peux pas passer par cette méthode c'est que je voudrais que cette mise en forme dépende du contenu d'une cellule qui peux être modifiée.
Je m'explique:
- J'ai créé une trame de compte avec en cellule B1 le mois en cours (exemple "Juin")
- En plage B10 à B30, il y a les jours des opérations effectuées (exemple "10" du mois)
Mon but est donc d'avoir Le contenu de "B1", à savoir "Juin" qui vient s'ajouter au contenu de la cellule pour avoir ainsi "10 Juin".
J'ai donc ceci de créé:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B10:B30,I10:I12,I18:I20"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Target.Value = Target.Value & " " & Cells.Range("B1").Text
Application.EnableEvents = True
End If
End Sub
Le problème est qu'avec cette macro si j'ouvre ma trame de comptes vierge avec des dates pré-rentrées, la modification ne se fait pas automatiquement.
Merci de vous pencher sur mon cas.
A voir également:
- Macro mise en forme sous excel
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme tableau word - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour,
et si ta procédure était appelée à la fois par Worksheet_Change et Workbook_Open ?
A suivre...
et si ta procédure était appelée à la fois par Worksheet_Change et Workbook_Open ?
A suivre...
Bonsoir,
Je t'ai fait ne petite macro qui répond à ce que tu vex.
Seule chose, dans la cellule B1 if faut entrer le numéro du mois et pas sont nom.
La macro fonctionne pour les cellules de B10 à B30, à toi de l'adapter pour les autres cellules.
Tu tape les N° des jours dans B10 à B30
et tu colle cette macro..
A+
Je t'ai fait ne petite macro qui répond à ce que tu vex.
Seule chose, dans la cellule B1 if faut entrer le numéro du mois et pas sont nom.
La macro fonctionne pour les cellules de B10 à B30, à toi de l'adapter pour les autres cellules.
Tu tape les N° des jours dans B10 à B30
et tu colle cette macro..
'Mettre au dessus du module Dim MemAd As String Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim D As String If MemAd = "$B$1" Then D = "1/" & Cells(1, 2) Cells(1, 2) = Format(D, "mmmm") For i = 10 To 30 If Cells(i, 2) <> "" Then D = Format(Trim(Left(Cells(i, 2), 2)) & "/" & Month(D) _ , "dd mmmm") Cells(i, 2) = D End If Next i End If MemAd = Target.Address End Sub
A+
Bonsoir,
Je t'ai fais, une petite macro qui répond à ce que tu veux.
Seule chose, dans la cellule B1 il faut entrer le numéro du mois et pas sont nom.
La macro fonctionne pour les cellules de B10 à B30, à toi de l'adapter pour les autres cellules.
Tu tape les N° des jours dans B10 à B30
et tu colle cette macro..
A+
Je t'ai fais, une petite macro qui répond à ce que tu veux.
Seule chose, dans la cellule B1 il faut entrer le numéro du mois et pas sont nom.
La macro fonctionne pour les cellules de B10 à B30, à toi de l'adapter pour les autres cellules.
Tu tape les N° des jours dans B10 à B30
et tu colle cette macro..
'Mettre au dessus du module Dim MemAd As String Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim D As String If MemAd = "$B$1" Then D = "1/" & Cells(1, 2) Cells(1, 2) = Format(D, "mmmm") For i = 10 To 30 If Cells(i, 2) <> "" Then D = Format(Trim(Left(Cells(i, 2), 2)) & "/" & Month(D) _ , "dd mmmm") Cells(i, 2) = D End If Next i End If MemAd = Target.Address End Sub
A+
Et bien ce que je recherche c'est que les cellules "date" soient mises à jour dès qu'il y a modification de la cellule B1, comme cela se passe sous excel avec les mises en forme personnalisées, donc sans avoir besoin de fermer l'application puis la redémarrer.