XL 2019 Copier les valeurs, les couleurs pas MEFC ni formules

Dim.Reichart

XLDnaute Occasionnel
Bonsoir,
J'ai une macro qui fait une copie du planning dans les colonnes sur la gauche (vous avez des exemples, et au pire, pressez le bouton…) à des fins de sauvegarde.
Le planning de départ à une MEFC qui met en gris si le jour est en week end ou férié, il y a des formules sur les lignes de date pour cela.

Je souhaite que le planning sauvegardé comporte les valeurs et les couleurs, mais ni les formules, ni les MEFC qui feraient ramer le fichier inutilement (t dont je n'ai plus besoin une fois les couleurs sauvegardées).

Après recherche sur le forum, j'ai essayé avec:
range(sauvegarde).interior.colorindex = range(planning).interior.colorindex
range(sauvegarde).font.formats = range(planning).font.formats
range(planning).copy range(sauvegarde).pastespecial paste:= xlpasteformats

Soit cela copie les MEFC, et les décale puisque je ne copie pas les cellules de référence, soit juste les valeurs, bref, ça ne fonctionne pas.
Est-ce que vous avez une autre solution, ou une explication à me proposer?
 

Pièces jointes

  • Exercice.xlsm
    32.4 KB · Affichages: 7

eriiic

XLDnaute Barbatruc
Bonjour,

fais l'inverse, copie tout et enlève ce que tu ne veux pas :
VB:
    'Séléctionner le tableau, le copier dans la plage de destination
    Set Dest = Range("ak1:bs6").Offset(Lig - 1)
    Range("a10:ai15").Copy Dest
    Dest.Value = Dest.Value
    Dest.FormatConditions.Delete
eric
 

Dim.Reichart

XLDnaute Occasionnel
Bonjour @eriiiic , @Staple1600 , @mapomme
Je regarde vos solutions, je vous fais un retour dès que possible.
Merci à vous trois.
EDIT: bon, pour l'instant, soit c'est entièrement noir (pas top), soit les couleurs sont inversées (original, mais faux)…
RE-EDIT: en fait, ca n'est même pas inversé, il met des week end en blanc, mais toujours à la même position, quel que soit le mois (alors que mes jours sont calculés)
 
Dernière édition:

Dim.Reichart

XLDnaute Occasionnel
bon j'essaye avec ça, sans copier les MFC, mais en faisant calculer si le jour rempli les conditions, sauf que ca ne marche pas non plus (mais pour une autre raison visiblement).
Je dois avoir une erreur dans le code, mais la je ne la vois pas. J'ai essayé de passer la condition férié en commentaire, parce que je pensais que l'erreur venait de listobjects, mais j'ai toujours la même erreur.
VB:
'Séléctionner le tableau, le copier dans la plage de destination
    Set Dest = Range("ar1:bz" & C - 9).Offset(Lig - 1)
    Dest.Value = Range("g10:ao" & C).Value
    For A = 1 To 31
        If Format(DateValue(Cells("ar" & Lig).Offset(0, A)), "jjj") = "sam" Or Format(DateValue(Cells("ar" & Lig).Offset(0, A)), "jjj") = "dim" Or Format(DateValue(Cells("ar1").Offset(Lig - 1)), "jjj") = Worksheets("Cachee").ListObjects("Ferie") Then
        Range("ar1:ar" & C - 9).Offset(Lig - 1, A).Interior.Color = 24
        End If
    Next A
Staple, oui, merci, j'ai essayé aussi différentes variantes avec ta solutions et celles des autres aussi, sans résultat concluant pour l'instant.

EDIT 14h50:
Sans le or, que je verrais plus tard pour faire fonctionner:
Code:
'Séléctionner le tableau, le copier dans la plage de destination
    Set Dest = Range("ar1:bz" & C - 9).Offset(Lig - 1)
    Dest.Value = Range("g10:ao" & C).Value
    For A = 0 To 31
    Acell = Range("aw" & Lig).Offset(0, A).Value
        If Format(Acell, "jjj") = "sam" Then
        Range("ar1:ar" & C - 9).Offset(Lig - 1, A).Interior.Color = 4
        End If
    Next A
Pourtant, Acell a bien une date, et dans un mois, il y a forcément des samedi, non?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re,

Juste pour infos
Pour savoir si un jour est un samedi ou un dimanche, tu peux te simplifier la tâche
Voir petit test ci-dessous
VB:
Sub samdim()
x = Date
lundi = Date - Weekday(Date, 2) + 1
For i = 1 To 7
If Weekday(lundi + i, 2) > 5 Then
MsgBox Format(lundi + i, "dddd dd mmmm"), vbExclamation, "Samedi ou dimanche"
Else
MsgBox lundi + i, vbCritical, "Ni samedi, ni dimanche"
End If
Next
End Sub
Donc ce qui peut ici resservir c'est ce test
If Weekday(DateTestée, 2) > 5 Then

EDITION: Bonjour mapomme ;)
T'avions point vu passé.
 

Dim.Reichart

XLDnaute Occasionnel
@mapomme non, ca ne fonctionne pas, mais là je sens que j'approche d'une solution.
Donc, d'abord, il faut mettre le format en anglais "ddd" et pas "jjj" et ensuite, les jours sont renvoyés aux format lun. mar. etc, ne pas oublier le point dans la valeur de comparaison.
Bon, il me reste a trouver comment comparer au tableau des jours feriés et ça devrait être bon.
 

Dim.Reichart

XLDnaute Occasionnel
Staple, j'ai lu le message quand je venais de réussir à faire fonctionner pour les samedi et dimanche, vu que c'est codé et fonctionnel, je ne pense pas rechanger mais j'ai tout de meme noté la fonction dans mon calepin, ca pourra me servir.
Par contre, pour les fériés, je teste avec :
VB:
if Not Cells.Find(Acell, Worksheets("Tableau").Range("r1")) Is Nothing Then
mais (après avoir encore une fois corrigé les dates qui s'étaient mises en 1900 pour une obscure raison), cela ne fonctionne pas (mais les samedi et dimanche fonctionnent)...
Dans mon tableau, colonne R, j'ai la liste de tous les jours fériés jusqu'en 2021 (ah, je vais vérifier que le format soit bien le meme, fait: oui)
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 810
dernier inscrit
mohammedaminelahbali