Copie de propriétés Format de cellule d'une MFC impossible si NULL
Bonjour,
j'ai créé un ensemble de procédures et fonctions VBA pour gérer les Mises en Forme Conditionnelles (MFC).
Dans l'un d'elles, je souhaite copier les formats de cellule de la MFC d'une plage vers une MFC d'une autre plage.
Voici le code correspondant :
Sub MFC_Copy_MiseEnForme(pMFC_Source As FormatCondition, pMFC_Destination As FormatCondition)
'Copie la mise en valeur (Police, Bordures et Remplissage )d'une MFC source sur une MFC destination
' seules certaines propriétés sont disponibles pour les MFC
' impossible d'affecter la valeur de pMFC_Source si = NULL
On Error Resume Next
' Font
'pMFC_Destination.Font.FontStyle = pMFC_Source.Font.FontStyle
' l'affectation pMFC_Destination.Font.FontStyle = Null ne marche pas et pas d'erreur détectée même si on enlève On Resume Next
If IsNull(pMFC_Source.Font.FontStyle) Then pMFC_Destination.Font.FontStyle = Null Else pMFC_Destination.Font.FontStyle = pMFC_Source.Font.FontStyle
pMFC_Destination.Font.Size = pMFC_Source.Font.Size
pMFC_Destination.Font.Italic = pMFC_Source.Font.Italic
pMFC_Destination.Font.Bold = pMFC_Source.Font.Bold
pMFC_Destination.Font.Color = pMFC_Source.Font.Color
pMFC_Destination.Font.Strikethrough = pMFC_Source.Font.Strikethrough 'barré
pMFC_Destination.Font.Underline = pMFC_Source.Font.Underline 'souligné
pMFC_Destination.Font.Subscript = pMFC_Source.Font.Subscript 'indice
pMFC_Destination.Font.Superscript = pMFC_Source.Font.Superscript 'exposant
'pMFC_Destination.Font = pMFC_Source.Font
' Interior
pMFC_Destination.Interior.Color = pMFC_Source.Interior.Color
pMFC_Destination.Interior.Gradient = pMFC_Source.Interior.Gradient
pMFC_Destination.Interior.Pattern = pMFC_Source.Interior.Pattern
pMFC_Destination.Interior.PatternColor = pMFC_Source.Interior.PatternColor
' Borders
pMFC_Destination.Borders.LineStyle = pMFC_Source.Borders.LineStyle
pMFC_Destination.Borders.Color = pMFC_Source.Borders.Color
'For i = 1 To pMFC_Destination.Borders.Count
For i = 1 To 4
pMFC_Destination.Borders(i).LineStyle = pMFC_Source.Borders(i).LineStyle
pMFC_Destination.Borders(i).Color = pMFC_Source.Borders(i).Color
Next i
On Error GoTo 0
End SubCela fonctionne correctement, sauf pour les formats non renseignés dans la MFC à copier.
Un exemple :
- Dans la MFC Source, le format appliqué si la condition est vrai concerne uniquement le Remplissage (couleur de fond bleu), rien sur la police, rien sur les bordures.
- Dans la MFC Destination, le format appliqué si la condition est vrai concerne uniquement la police.
Après exécution de la procédure, le format concernant le remplissage (couleur de fond bleu) a bien été reporté mais les autres et particulièrement celui de la police (sans rien) n'est pas reporté, la MFC Destination a conservé le format de Police initial.
Il semblerait que les caractéristiques qui sont à NULL dans la MFC Destination ne sont pas reportées.
Dans le code, selon le type de données de la caractéristique, un erreur est signalée lors de l'affectation. J'ai positionné un
On Error Resume Next en début de code pour éviter le signalement.
J'ai fait des essais de codage du type
if IsNull(pMFC_Source.Font.FontStyle) Then pMFC_Destination.Font.FontStyle = Null Else pMFC_Destination.Font.FontStyle = pMFC_Source.Font.FontStyle.Sans succès.
Je cherche une solution VBA à appliquer dans ce cas. Par exemple, correspondant au bouton "Effacer" des Onglets "Police" "Bordure" et "Remplissage" la fenêtre "Format de Cellule" de paramétrage du Format de chaque MFC. Tout autre solution est également la bienvenue
Merci d'avance.
Bonjour clr et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum et notamment
- Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).
Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.
Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)
Merci pour votre participation
Cordialement
Je me réponds à moi-même pour fermer le sujet et le remplacer par un nouveau sujet où j'ai simplifié l'exposition du problème et ajouté un exemple de fichier