Macro mise en forme sous excel

Résolu
sfab41 -  
lermite222 Messages postés 9042 Statut Contributeur -
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.
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Bonjour,
    et si ta procédure était appelée à la fois par Worksheet_Change et Workbook_Open ?
    A suivre...
    0
    1. 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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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