Signaler

Galère macro avec développeur [Résolu]

Posez votre question eric2027 268Messages postés vendredi 25 juin 2010Date d'inscription 19 avril 2017 Dernière intervention - Dernière réponse le 19 avril 2017 à 22:03 par eric2027
Bonjour le forum

J'ai fait une macro avec le développeur, pourriez m'aider à le simplifier, de plus si vous pouviez me sélectionner jusqu'à 5000 lignes parce que je n'ai quelques lignes certainement à cause du développeur et je ne sais pas comment faire pour sélectionner jusqu'à 5000

Je peux vous envoyer une PJ

Par avance, merci pour vos solutions

Bien cordialement

ericp

Le code :

Sub Macro1()
'
' Macro1 Macro
'

'
Range("B1:S12").Select
Range("J1").Activate
Application.CutCopyMode = False
Selection.EntireRow.Delete
Range("A1").Select
Selection.EntireColumn.Delete
Range("A1:T12").Select
With Selection
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlLTR
.MergeCells = False
End With
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
Columns("Q:Q").Select
Selection.Delete Shift:=xlToLeft
Columns("L:L").Select
Selection.Insert Shift:=xlToRight
Range("L2").Select
ActiveCell.FormulaR1C1 = "=75000+RC[1]"
Range("L2").Select
Selection.AutoFill Destination:=Range("L2:L11")
Range("L2:L11").Select
Range("L1").Select
ActiveCell.FormulaR1C1 = "X"
With ActiveCell.Characters(Start:=1, Length:=1).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("A1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$R$12").AutoFilter Field:=1, Criteria1:="<>"
ActiveSheet.Range("$A$1:$R$12").AutoFilter Field:=2, Criteria1:="<>"
Range("A1:R12").Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"DPP-20-1_ListeDesMissionsParArr!R1C1:R12C18", Version:=xlPivotTableVersion10 _
).CreatePivotTable TableDestination:="Feuil1!R3C1", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
Sheets("Feuil1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("2")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("3")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("X")
.Orientation = xlRowField
.Position = 3
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("3"), "Nombre de 3", _
xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("2")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("X")
.PivotItems("168500").Visible = False
.PivotItems("(blank)").Visible = False
End With
End Sub
aucun avatar ericp
Membre habitué
Membre habitué

Messages : 111
Inscription : 5 Novembre 2009
Version Excel : 2007




Afficher la suite 
Utile
+0
plus moins
Bonjour,

Je te propose ceci à tester
Sub Macro1()
'
' Macro1 Macro
'

'
Rows("1:2").Delete
Dim der As Long
der = ActiveSheet.UsedRange.Rows.Count
With Range("A1:T12")
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .ShrinkToFit = False
    .ReadingOrder = xlLTR
    .MergeCells = False
End With
Columns("M:N").Delete Shift:=xlToLeft
Columns("Q:Q").Delete Shift:=xlToLeft
Columns("L:L").Insert Shift:=xlToRight

Range("L2:L" & der).FormulaR1C1 = "=75000+RC[1]"
Range("L1").FormulaR1C1 = "X"
With Range("L1").Characters(Start:=1, Length:=1).Font
    .Name = "Arial"
    .FontStyle = "Gras"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
End With
With Range("$A$1:$R$" & der)
    .AutoFilter Field:=1, Criteria1:="<>"
    .AutoFilter Field:=2, Criteria1:="<>"
End With
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"DPP-20-1_ListeDesMissionsParArr!R1C1:R" & der & "C18", Version:=xlPivotTableVersion10 _
).CreatePivotTable TableDestination:=ActiveSheet.Range("A3"), TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
    With .PivotFields("2")
        .Orientation = xlRowField
        .Position = 1
        .Orientation = xlColumnField
        .Position = 1
    End With
    With .PivotFields("3")
        .Orientation = xlRowField
        .Position = 2
    End With
    With .PivotFields("X")
        .Orientation = xlRowField
        .Position = 3
        .PivotItems("168500").Visible = False
        .PivotItems("(blank)").Visible = False
    End With
    .AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("3"), "Nombre de 3", xlCount
End With
End Sub
Donnez votre avis
Utile
+0
plus moins
Bonjour gbinforme

un grand merci de t'être arrêté sur mon soucis

ça me beug à ce niveau

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:

je ne vois pas d'ou cela peut venir
Donnez votre avis
Utile
+0
plus moins
Re

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"DPP-20-1_ListeDesMissionsParArr!R1C1:R" & der & "C18", Version:=xlPivotTableVersion10 _
).CreatePivotTable TableDestination:=ActiveSheet.Range("A3"), TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10

erreur exécution "1004"

Le nom du champs du tableau croisé dynamique n'est pas valide
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 18 avril 2017 à 08:39
Bonjour,

Cela vient probablement de ta ligne titre qui a des cellules vides ou identiques.
Répondre
Donnez votre avis
Utile
+0
plus moins
Aie,

dans ma macro, je les enlève au fur et à mesure de l'évolution de mon travail, cela voudrait dire qu(il faut que je fasse d'abord une mise en page de ma ligne de titre, idem pour les colonnes que j'enlève.

Pourtant quand lance ma macro, tout s'effectue sans problème.

Ou alors faire 2 macros, une pour enlever les colonnes et refaire ma ligne de titre ?
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 18 avril 2017 à 10:20
Bonjour,

Avec juste le code sans connaitre le contexte, c'est impossible d'aller plus loin dans l'adaptation.
Répondre
Donnez votre avis
Utile
+0
plus moins
Et si je te joins un fichier ? tu pourrais voir si il y a une solution
http://www.cjoint.com/c/GDsiK66h8Is
Donnez votre avis
Utile
+0
plus moins
oups, j'ai oublié d'incorporer le code

http://www.cjoint.com/c/GDskiUul5Js
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 18 avril 2017 à 18:29
Bonsoir,

Je me demande pourquoi tu veux une macro pour ton classeur car tel qu'il est conçu la macro ne peut fonctionner qu'une seule fois et donc n'a aucun intérêt ?
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonsoir,

Oui c'est pour ça que j'aimerais une macro sur cette base car j'ai des dizaines de fichiers à gérer en début de semaine et cela me ferait un max de temps pour faire mes stats ensuite.
Donnez votre avis
Utile
+0
plus moins
Tu penses que je devrais laisser tomber l'idée d'une macro et continuer manuellement ?
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Ton classeur est vraiment curieux et je ne sais pas si les autres sont identiques. J'ai adapté la macro en fonction du classeur et elle est dans un classeur spécifique.
- tu l'ouvres
- tu ouvres les autres classeurs au fur et à mesure
- tu lances la macro avec le raccourci "ctrl+t"
Avec ton exemple cela fonctionne.

http://www.cjoint.com/c/GDthCmmGMbl
Donnez votre avis
Utile
+0
plus moins
Bonjour,

sur mon exemple cela fonctionne, mais des que je mets ta macro ma base réel

ça me beug à ce niveau :

With .PivotFields("2")
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 19 avril 2017 à 18:11
Bonjour,

sur mon exemple cela fonctionne,
Si ton exemple ne correspond pas à ta base, c'est que ce n'est pas un bon exemple, ne crois-tu pas ?

Essayes avec ceci : http://www.cjoint.com/c/GDtqjoQzDZl
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

J'ai testé et ça marche du tonnerre, franchement tu es génial, je vais gagner un maximum de temps et me consacrer à fond sur mes stats en faisant des mises en page de tonnerre

Encore un grand, grand merci à toi et tes connaissances

Je mets en résolu
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 19 avril 2017 à 21:38
Merci de ton sympathique message et content que cela fonctionne car tes classeurs sont assez curieux en conception avec plein de pièges comme les titres numériques qui sont incompatibles avec les TCD.
Bonne continuation et bonnes statistiques sportives.
Répondre
eric2027 268Messages postés vendredi 25 juin 2010Date d'inscription 19 avril 2017 Dernière intervention - 19 avril 2017 à 22:03
Franchement gbinforme,

Je suis sincère, grace à tes connaissances, tu vas me permettre de produire un max de travail, je suis chez moi et grace à toi je vais pouvoir rattraper le retard que j'avais et c'est pas en HS, juste une reconnaissance du travail founi
Mille merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !