Macro à simplifier

Bonjour,

J'ai créer un fichier avec des macros. Je pars de nombreuses données pour en faire un plus synthétique. J'ai fait un enregistrement pas à pas. Mais je trouve celle-ci lourde et avec de nombreuses incohérences. Le tableau de synthèse doit se créer dans une nouvelle page. Je ne veux pas voir apparaître de ligne vide au niveau des arrivées et des conformités.

Pouvez vous jeter un coup d'oeil et me dire ce qui cloche pour que je progresse ?

Merci d'avance,

Aline

Bonjour,

Il manque juste le fichier...

Avec la pièce jointe, c'est beaucoup mieux.

Bon... Normalement je n'ai rien changé : Tu me diras ce qui ne convient pas...

Sub Macro1()
Dim WsC As Worksheet
Set WsC = Sheets("Feuil8")
    Columns("B:B").Copy
      WsC.Range("A1").PasteSpecial Paste:=xlPasteValues
    Columns("D:E").Copy
      WsC.Range("B1").PasteSpecial Paste:=xlPasteValues
    Columns("T:T").Copy
      WsC.Range("D1").PasteSpecial Paste:=xlPasteValues
    Columns("AL:AM").Copy
      WsC.Range("E1").PasteSpecial Paste:=xlPasteValues
WsC.Activate
    Columns("E:F").ColumnWidth = 19.86
    WsC.ListObjects.Add(xlSrcRange, Range("$A:$F"), , xlYes).Name = _
        "Tableau1"
    WsC.ListObjects("Tableau1").TableStyle = "TableStyleMedium9"
    Columns("D:D").NumberFormat = "h:mm;@"
    Columns("A:B").HorizontalAlignment = xlCenter
    Columns("C:C").ColumnWidth = 32.29
    Columns("D:D").ColumnWidth = 15.29
    Columns("D:E").HorizontalAlignment = xlCenter
    WsC.ListObjects("Tableau1").Range.AutoFilter Field:=4, Criteria1:= _
        "<>"
    WsC.ListObjects("Tableau1").Sort.SortFields. _
        Clear
    WsC.ListObjects("Tableau1").Sort.SortFields. _
        Add Key:=Range("Tableau1[N° Magasin]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    WsC.ListObjects("Tableau1").Sort.SortFields. _
        Add Key:=Range("Tableau1[Type tour]"), SortOn:=xlSortOnValues, Order:= _
        xlDescending, DataOption:=xlSortNormal
    With WsC.ListObjects("Tableau1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    WsC.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:= _
        "<>"
End Sub

A+

C'est génial, mais il me dit à la fin un message d'erreur par lequel "Erreur Exécution 1004"

Un tableau ne peut pas en chevaucher un autre.

Recommence avec une Feuil8 vierge ??

De plus, aucune information ne vient alors que j'ai rentré des données dans notre premier tableau.

J'ai fait la modif avec la feuille 8 vierge.

Cdt,

Bonjour,

Quel est l'intérêt de dimensionner un tableau sur l'ensemble des lignes de la feuille, soit sur 1.048.576 lignes ?

Pour peu qu'il y ait des formules, le fichier aura une taille démesurée.

Un fichier avec quelques lignes documentées serait un plus pour une réponse adaptée.

De plus, la mise en forme est secondaire ; l'effectuer après, lorsque la procédure fonctionne.

Cdlt.


Bonjour,

Quel est l'intérêt de dimensionner un tableau sur l'ensemble des lignes de la feuille, soit sur 1.048.576 lignes ?

Pour peu qu'il y ait des formules, le fichier aura une taille démesurée.

Un fichier avec quelques lignes documentées serait un plus pour une réponse adaptée.

De plus, la mise en forme est secondaire ; l'effectuer après, lorsque la procédure fonctionne.

Cdlt.

Bonjour Jean-Eric,

Il suffirait que le tableau prenne jusqu'à la dernière du tableau rempli. Mais je ne sais pas faire. Je suis désolée.

Cdt,

Re,

Aline, ne soit pas désolée. On est pas là pour juger, mais pour apporter une aide. Et nous avons besoin d'éléments pour travailler.

Envoie nous un petit fichier représentatif . Nous pourrons alors t'apporter une aide adaptée.

A te relire.

Cdlt.

C'est sur qu'avec juste une ligne d'en-tête c'est un peu juste.

J'ai refait le truc sans les tris, Filtre... YORAPUKA faire une tite macro pour ça et le rajouter à la fin.

bonjour à tous

mon avis perso : ne pas chercher à reporter des données d'un onglet à un autre

on n'efface ni n'enlève jamais rien dans une table de données

une des colonnes sert à voir "cette ligne est terminée". Il suffit de filtrer selon cette information pour ne visualiser que les encours.

pour faire des analyses (problèmes par date par transporteur, écarts délais, profondeur de retard etc) on crée de simples TCD.

un de mes clients a un tableau des livraisons sous Excel. Des centaines (milliers ? ) de lignes. Un unique onglet contenant TOUTES les données saisies depuis 2 ans 1/2.

pas de VBA, aucune formule (sauf des + et - et * ) Ta macro est-elle suffisamment simplifiée ?

Il n'y a aucun problème. Il est évident que les opérations vont être moins lourdes à programmer que de copier deux fois les éléments.

Rechercher des sujets similaires à "macro simplifier"