XL 2013 Copier avec mise en forme conditionnelle

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:

sr94

XLDnaute Occasionnel
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:

job75

XLDnaute Barbatruc
Re : Copier avec mise en forme conditionnelle

Bonjour sr94, le forum,

Je ne vois pas où est le problème :confused:

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.
 

sr94

XLDnaute Occasionnel
Re : Copier avec mise en forme conditionnelle

oui là ça marche comme ça, merci !

finalement je n'ai plus besoin de ma formule de la colonne 4 (je l'ai mise dans access qui permet de rapatrier les informations), que dois je modifier pour ne plus stocker cette valeur ?
 

Pièces jointes

  • fichier test.xlsm
    32 KB · Affichages: 45
  • fichier test.xlsm
    32 KB · Affichages: 65

job75

XLDnaute Barbatruc
Re : Copier avec mise en forme conditionnelle

Re,

:confused: 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+
 

job75

XLDnaute Barbatruc
Re : Copier avec mise en forme conditionnelle

Re,

Ah bon :confused: 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:

sr94

XLDnaute Occasionnel
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.
 

job75

XLDnaute Barbatruc
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

  • fichier test(1).xlsm
    32.6 KB · Affichages: 32
  • fichier test(1).xlsm
    32.6 KB · Affichages: 38

job75

XLDnaute Barbatruc
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

  • fichier test(2).xlsm
    31.5 KB · Affichages: 33
  • fichier test(2 bis).xlsm
    31.4 KB · Affichages: 31
  • fichier test(2).xlsm
    31.5 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 333
Messages
2 087 371
Membres
103 528
dernier inscrit
maro