Bonsoir,
J'ai crée un fichier de planning avec des MFC grâce à la macro de MydearFriend (version 2 datant de 2005 si je me trompe pas )
car au travail on utilise encore une version qui ne supporte que 3 MFC et cela répond très bien à nos besoins
Le problème viens en fait de la fonction copier que j'utilise en VBA.
En cliquant sur un bouton, je copie des cellules qui peuvent venir de 3 feuilles différentes (Janvier, Février , Mars , etc.. ) et que je colle dans une feuille récapitulative (cycle 1, 2, etc...).
Cela marche bien sauf qu'a chaque fois que je clique sur le bouton cela copie en même temps les MFC des cellules d'origines qui s'accumulent dans ma feuille récapitulative
Si je fais une simple copie des valeurs avec une MFC via la macro de MDF, cela ne marche pas, les données sont bien copieés mais la MFC ne se fait pas
En fait le fonctionnement idéal serait que dès que l'on modifie une cellule dans janvier par exemple, cette modification soit reporté automatiquement dans le cycle concerné avec la MFC de la cellule d'origine
voila le code que j'utilise pour mon bouton
voila la macro de MDF que j'utilise (sa version 5 bug dans mon fichier???)
merci d'avance de vos réponses d'expert
WocaM
J'ai crée un fichier de planning avec des MFC grâce à la macro de MydearFriend (version 2 datant de 2005 si je me trompe pas )
car au travail on utilise encore une version qui ne supporte que 3 MFC et cela répond très bien à nos besoins
Le problème viens en fait de la fonction copier que j'utilise en VBA.
En cliquant sur un bouton, je copie des cellules qui peuvent venir de 3 feuilles différentes (Janvier, Février , Mars , etc.. ) et que je colle dans une feuille récapitulative (cycle 1, 2, etc...).
Cela marche bien sauf qu'a chaque fois que je clique sur le bouton cela copie en même temps les MFC des cellules d'origines qui s'accumulent dans ma feuille récapitulative
Si je fais une simple copie des valeurs avec une MFC via la macro de MDF, cela ne marche pas, les données sont bien copieés mais la MFC ne se fait pas
En fait le fonctionnement idéal serait que dès que l'on modifie une cellule dans janvier par exemple, cette modification soit reporté automatiquement dans le cycle concerné avec la MFC de la cellule d'origine
voila le code que j'utilise pour mon bouton
Code:
Sub cycle_1() ' cycle_1 menu Macro
Application.ScreenUpdating = False
Sheets("janvier").Range("T6:AU20").Copy 'copie la plage
With Sheets("cycle_1").Range("E6")
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Sheets("fevrier").Range("M6:AN20").Copy 'copie la plage
With Sheets("cycle_1").Range("E25")
.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
End With
Sheets("cycle_1").Select
Range("R1").Select
End Sub
voila la macro de MDF que j'utilise (sa version 5 bug dans mon fichier???)
Code:
Option Explicit
'---------------------------------------------------------------------------------------
' Auteur : Didier FOURGEOT (myDearFriend!)
' Date : 18/09/2005
' Sujet : MFC multiples
'---------------------------------------------------------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim TabTemp As Variant
Dim L As Long
Dim V As Variant
'Ne gère pas les sélections de plages
If Target.Cells.Count > 1 Then Exit Sub
'Vérifie la présence du format conditionnel "spécial"
If Target.FormatConditions.Count < 1 Then Exit Sub
If Target.FormatConditions(1).Formula1 = "=mDF" Then
With Sheets("MFC")
'Charge les préférences dans un tableau variant temporaire
L = .Range("A65536").End(xlUp).Row
TabTemp = .Range(.Cells(1, 1), .Cells(L, 1)).Value
'Détermine le format à utiliser suivant la valeur de la cellule
If Target.Value = "" Then
L = 1
Else
For L = 2 To UBound(TabTemp, 1)
If Target.Value = TabTemp(L, 1) Then Exit For
Next L
End If
'Gestion des erreurs (impératif, compte tenu de la désactivation des évènements)
On Error GoTo Fin
Application.EnableEvents = False
'Applique le format (sauf les bordures)
.Cells(L, 2).Copy
V = Target.Formula
Target.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Target.Formula = V
'Il semble que sur Mac et dans certaines situations (non ciblées) le format
'conditionnel "spécial" d'origine ne soit pas écrasé par le nouveau, il convient
'donc de s'en assurer avant de réimposer ce format spécial.
If Target.FormatConditions.Count < 1 Then Target.FormatConditions.Add Type:=xlExpression, Formula1:="=mDF"
Application.CutCopyMode = False
Application.EnableEvents = True
End With
End If
Exit Sub
Fin:
'En cas d'erreur dans le code, il convient impérativement de rétablir la gestion des
'évènements d'application pour la suite. Par une gestion d'erreur, on réaffecte la
'valeur True à la propriété Application.EnableEvents et on informe l'utilisateur qu'une
'erreur non gérée est survenue
MsgBox "Erreur non gérée dans la procédure Workbook.SheetChange()" & vbLf & "Erreur : " & _
Err & " " & Err.Description, vbOKOnly, "myDearFriend!"
Application.EnableEvents = True
End Sub
merci d'avance de vos réponses d'expert
WocaM