Macro mise en forme sous excel

Résolu
sfab41 -  
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.
A voir également:

3 réponses

Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   309
 
Bonjour,
et si ta procédure était appelée à la fois par Worksheet_Change et Workbook_Open ?
A suivre...
0
sfab41
 
Bonjour Ivan-Hoe et merci de me répondre.

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.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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..
'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+
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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..
'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+
0