XL 2013 Copier avec mise en forme conditionnelle

  • Initiateur de la discussion Initiateur de la discussion sr94
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sr94

XLDnaute Occasionnel
Bonjour

Je suis toujours sur le même fichier, avec ma macro qui me permet de scinder mon classeur en plusieurs.
Je ne peux pas mettre de pièce jointe, la fichier est trop lourd.

Cette macro permet de copier les données filtrées dans une feuille temporaire, la copie ne prend pas en compte les mises en forme conditionnelles et les formules, est ce possible de modifier le code en dessous pour qu'il les prenne en compte ?

Code:
For Each c In Range("AJ5", Range("AJ100").End(xlUp))

PlageExtract = c
Sheets.Add
Data.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Production_Schedule").[AJ4:AJ5], CopyToRange:=[A1], Unique:=False
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AC$2000"), , xlYes).Name = "tab_Production_Schedule"

Merci
 
Dernière édition:
Re : Copier avec mise en forme conditionnelle

Bonjour,

La macro marche à merveille !

Je souhaiterais la lancer à partir d'un bouton placé sur une autre feuille, mais en ajoutant au début un code de type Worksheets("nom de ma feuille)".Activate la macro s'exécute bien, par contre excel plante à la fin.

Que dois je modifier ?

merci !
 
Dernière édition:
Re : Copier avec mise en forme conditionnelle

Bonjour sr94, le forum,

Je ne vois pas où est le problème 😕

Avec un bouton de type formulaire affecter la macro au bouton.

Avec un bouton de type ActiveX appeler la macro dans le code du bouton.

Si l'on veut rester sur la feuille du bouton il n'y a aucune modification à apporter à la macro.

Si l'on veut aller sur la feuille du tableau, modifier comme suit :

Code:
Sub Production_Schedule()
Dim F As Worksheet, chemin$, t, tf, ncol%, d As Object, i&
Dim e, critere$, n&, txt$, j%
Set F = Feuil1 'CodeName de la feuille
F.Activate 'facultatif
DoEvents
ThisWorkbook.Save
'---suite du code--
-
Bonne journée.
 
Re : Copier avec mise en forme conditionnelle

Re,

😕 Bah il n'y a aucun "stockage"... Mais si l'on veut éviter une ligne de code :

Code:
'---initialise---
With F.ListObjects(1).DataBodyRange
  '.Columns(1) = .Columns(1).Value 'facultatif, supprime les formules de Colonne4
  t = .Value 'matrice des valeurs
  tf = .FormulaR1C1 'matrice des formules
  ncol = UBound(t, 2)
End With
A+
 
Re : Copier avec mise en forme conditionnelle

Re,

Ah bon 😕 mais ne faites quand même pas n'importe quoi :

Code:
'---
MsgBox "Les fichiers ont été créés"
'---rouvre le fichier---
1 Workbooks.Open ThisWorkbook.FullName
End Sub
Edit : ah oui , vous aviez essayé de mettre la MsgBox après Workbooks.Open ThisWorkbook.FullName

Il ne faut aucun code après cette dernière instruction !!!

A+
 
Dernière édition:
Re : Copier avec mise en forme conditionnelle

finalement j'ai remis votre code d'origine, j'avais toujours l'erreur (à la fin de l'exécution de la macro) en fait, avec parfois une fenêtre signalant qu'il n'y a pas assez de mémoire.
 
Re : Copier avec mise en forme conditionnelle

Re,

Alors vous n'aurez plus de problème de mémoire en rouvrant le fichier après exécution de la macro.

Utilisez :

Code:
Sub Rouvre()
Application.DisplayAlerts = False
Workbooks.Open ThisWorkbook.FullName
End Sub

Sub Production_Schedule()
'----
MsgBox "Les fichiers ont été créés"
'---réouverture différée du fichier---
1 Application.OnTime 1, "Rouvre"
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : Copier avec mise en forme conditionnelle

Re,

Une remarque : dans le tableau il y a une ligne Total (ligne 7).

Elle peut être utile dans les fichiers créés si elle contient des formules de Colonne4 à Colonne32.

Voyez le fichier (2) et les formules en D7 (Colonne4) et AF7 (Colonne32).

Sinon il vaut mieux supprimer cette ligne à ce niveau, voyez le fichier (2 bis) :

Code:
'---initialise---
With F.ListObjects(1).DataBodyRange
  '.Columns(1) = .Columns(1).Value 'facultatif, supprimme les formules en Colonne4
  .Rows(.Rows.Count + 1).Delete 'facultatif, supprime la ligne Total
  t = .Value 'matrice des valeurs
  tf = .FormulaR1C1 'matrice des formules
  ncol = UBound(t, 2)
End With
Attention, c'est important, dans un tableau Excel chaque colonne doit être entièrement au même format...

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
25
Affichages
778
Retour