EXCEL: Copier la mise en forme

zeuslp -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je souhaiterais savoir comment copier une mise en forme (remplissage de cellule) gâce à un lien en deux feuilles excel du type :

=feuille1!A1 ==> celui là ne copie que le contenu de la cellule.

Merci de votre aide.

2 réponses

  1. piopicolo Messages postés 1422 Statut Membre 200
     
    utilisez la fonction fx CELLULE("contenu", A1) : voir aide associée.
    0
    1. piopicolo Messages postés 1422 Statut Membre 200
       
      tu écris simplement : = Cellule("format", A1) et c'est fini
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      = Cellule()
      Renvoie des informations sur la mise en forme, la position ou le contenu de la cellule supérieure gauche d'une référence
      = Cellule("format", A1)
      Renvoie la valeur de texte correspondant au format de nombre défini pour la cellule. Les valeurs de texte des différents formats sont répertoriés dans le tableau ci-dessous. Renvoie "-" à la fin de la valeur de texte si la cellule est formatée en couleur pour les valeurs négatives. Renvoie "()" à la fin de la valeur de texte si la cellule est formatée avec des parenthèses pour les valeurs positives ou pour toutes les valeurs.

      dixit Microsoft

      Cela ne permet pas de copie la mise en forme !!!
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Seule une macro permet de faire cela.
    A copier dans le code de la feuille (clic droit sur l'onglet / visualiser le code) :
    Option Explicit
    
    Private Sub Worksheet_Activate()
      Call CopierFormats
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
      Call CopierFormats
    End Sub
    
    Private Sub CopierFormats()
    Dim wsh_act As Worksheet
    Dim sel_act As Range
    Dim cel_act As Range
    Dim wsh_dst As Worksheet
    Dim sel_dst As Range
    Dim cel_dst As Range
    Dim cel As Range
    Dim dst As Range
    Dim adr As String
    Dim frm As String
    Dim fx As String
    Dim ptr As Integer
    
    'mémorisation du contexte
    Set wsh_act = ActiveSheet       'feuille active
    'Set sel_act = Selection        'sélection (sur la feuille active)
    'Set cel_act = ActiveCell       'cellule active (sur la feuille active)
    Set wsh_dst = Worksheets(1)     'feuille destination
    wsh_dst.Activate
    Set sel_dst = Selection        'sélection (sur la feuille destination)
    Set cel_dst = ActiveCell       'cellule active (sur la feuille destination)
    
    'Arrêt : mise à jour écran, calculs, évènements
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    
    'copie des formats
    For Each cel In wsh_dst.UsedRange.Cells
      If cel.HasFormula Then
        frm = Mid(cel.Formula, 2)
        ptr = InStr(1, frm, "!")
        If ptr > 0 Then fx = Replace(Mid(frm, 1, ptr - 1), "'", "") Else fx = wsh_dst.Name
        adr = Mid(frm, ptr + 1)
        Set dst = Nothing
        On Error Resume Next
        Set dst = Worksheets(fx).Range(adr)
        On Error GoTo 0
        If Not dst Is Nothing Then
          dst.Copy
          cel.PasteSpecial (xlPasteFormats)
        End If
      End If
    Next
    Application.CutCopyMode = False
    
    'restitution du contexte
    sel_dst.Select
    cel_dst.Activate
    wsh_act.Activate
    
    'réactiver : mise à jour écran, calculs, évènements
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    
    End Sub
    
    
    0