Signaler

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

Posez votre question eric2027 286Messages postés vendredi 25 juin 2010Date d'inscription 21 mai 2017 Dernière intervention - Dernière réponse le 29 avril 2017 à 09:22 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 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 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 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 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 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 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 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 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 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 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 286Messages postés vendredi 25 juin 2010Date d'inscription 21 mai 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
eric2027 286Messages postés vendredi 25 juin 2010Date d'inscription 21 mai 2017 Dernière intervention - 25 avril 2017 à 18:14
Je reviens vers toi parce que mes supérieurs hiérarchiques me prennent la tête pour que je dé-selectionne dans la colonne 5 la case "y" et dans la colonne 6 la case "elle".
Ils sont compliqués et fatiguants

Est ce que tu crois que cela est possible si oui, je te mets en lien le fichier

http://www.cjoint.com/c/GDzqmgueJlt

Je te remercie

Bien cordialement
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour gbinforme

Je reviens vers toi parce que mes supérieurs hiérarchiques me prennent la tête pour que je dé-selectionne dans la colonne 5 la case "y" et dans la colonne 6 la case "elle".
Ils sont compliqués et fatiguants

Est ce que tu crois que cela est possible si oui, je te mets en lien le fichier

http://www.cjoint.com/c/GDzqmgueJlt

Je te remercie

Bien cordialement
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 25 avril 2017 à 20:51
Bonjour Éric,

je dé-selectionne dans la colonne 5 la case "y" et dans la colonne 6 la case "elle".
Je ne suis pas sûr d'avoir bien compris. Les lignes avec "y" et/ou "elle" doivent être masquées ? supprimées ?
Je pensais que seul ton TCD était important ?
Répondre
eric2027 286Messages postés vendredi 25 juin 2010Date d'inscription 21 mai 2017 Dernière intervention - 25 avril 2017 à 21:11
Bonsoir gbinforme

C'est cool de me répondre aussi rapidement, elles doivent être supprimées, de sorte que les résultats qui comportent "y" et "elle" ne soient pas comptabilisées dans mon TCD
Répondre
eric2027 286Messages postés vendredi 25 juin 2010Date d'inscription 21 mai 2017 Dernière intervention - 25 avril 2017 à 21:10
C'est cool de me répondre aussi rapidement, elles doivent être supprimées, de sorte que les résultats qui comportent "y" et "elle" ne soient pas comptabilisées dans mon TCD
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonsoir Éric,

Voici donc ton classeur macro modifié :

http://www.cjoint.com/c/GDzuMFKYtOl

L'on voit bien que les statistiques diffusées ne sont pas nécessairement le reflet de la réalité mais cela ne me surprends pas ;-)
Donnez votre avis
Utile
+0
plus moins
Bonjour Gbinforme

Les lignes "y" et "elle" sont toujours presentes
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 26 avril 2017 à 11:26
Bonjour Éric,

Tu n'as pas utilisé la dernière version...
https://www.dropbox.com/s/b899tw0t2s6jgqx/Macro_eric.xlsm?dl=0
Répondre
Donnez votre avis
Utile
+0
plus moins
J'ai bien téléchargé la derniere version avec le nouveau site pour aller chercher ta macro que j'ai testé et en colonne "5, j'ai toujours le Y" et en colonne "6 j'ai toujours les elles"
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 26 avril 2017 à 18:02
Bonjour Éric,

Attention j'ai toujours le Y" et en colonne "6 j'ai toujours les elles" tu avais demandé
je dé-selectionne dans la colonne 5 la case "y" et dans la colonne 6 la case "elle".
et donc les "ELLES" restent.
Voici ton classeur du poste 20 passé par la macro.

http://www.cjoint.com/c/GDAqbrt7Gml
Répondre
Donnez votre avis
Utile
+0
plus moins
Je pense que je me mélange les pieds si c'est possible, c'est enlever les lignes entières ou il y a des "y" et des "elle"

c'est bizarre je ne suis plus sur l'autre site pour télécharger tes fichiers
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 26 avril 2017 à 18:35
c'est enlever les lignes entières ou il y a des "y" et des "elle"
C'est bien ce que j'ai fait et si tu en trouves c'est que j'ai perdu la vue ;-)
Répondre
Donnez votre avis
Utile
+0
plus moins
Effectivement je restais bloqué sur "elle" et je n'ai pas vu que c'était les "elles" avec un s qui restait
Quand je change "y" par un nom et "elle" par le même les lignes ne sont pas enlevés,
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 26 avril 2017 à 21:12
bonsoir,
Quand je change "y" par un nom et "elle" par le même les lignes ne sont pas enlevés
C'est-à-dire ?
Si au lieu d'"Y" tu mets Dupont et au lieu d'"elle" tu mets Dupont, la ligne reste, cela me semble normal, les lignes sont supprimées selon leur contenu.
Si ensuite tu remplaces Dupont par Y, il sera dans le TCD.
Répondre
Donnez votre avis
Utile
+0
plus moins
Mais alors comment puis-je faire pour que mes lignes s'enlèvent avec des noms différents ?
Donnez votre avis
Utile
+0
plus moins
Mais je mets "dupont" dans la macro a la place de "y", et que dupont est dans ma base fichier et que je mets "dupont" à la place de 'elle" et que dupont est dans ma base fichier, pourquoi les lignes se s'enlèvent elle pas ,

C'est là que je ne comprends pas les macros
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 26 avril 2017 à 22:24
Tes données sont en majuscules sur tes classeurs et j'en ai tenu compte mais pas toi alors remplaces la ligne par celle-ci et cela fonctionnera
    If UCase(Cells(lig, "F").Value) = UCase("dupont") Or UCase(Cells(lig, "G").Value) = UCase("durand") Then

Ton exemple ne correspondait pas à tes classeurs et là c'est ton écriture qui ne correspond pas à la réalité des données : l'informatique est binaire et ne s’accommode que très mal de l'à peu près.
Voilà l'explication de ton incompréhension : C'est là que je ne comprends pas les macros il faut être très précis lorsque l'on veut coder car l'imagination n'est guère créatrice si on le fait au hasard.
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour gbinform

Tu es GÉNIE, grâce à toi, j'ai un autoroute devant moi pour faire ce que mes chefs veulent, et qu'ils me laissent tranquillement travailler.

Il me reste un an à tirer, après c'est la retraite et grâce à ta macro, je vois cette dernière année avec tranquillité et sérénité

Excuse moi si je me suis mal exprimé mais tu as su lire entre mes lignes
de plus d'être un génie, tu es d'une patience à tout égard

Bien à toi, et mille merci
gbinforme 13737Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 mai 2017 Dernière intervention - 27 avril 2017 à 09:12
Bonjour Éric,

Si tu as plusieurs noms à supprimer dans tes classeurs, il faudrait procéder tout à fait autrement en les mettant tout simplement dans la feuille du classeur macro ce qui évite toute erreur de manipulation dans la macro.

Voici le lien : http://www.cjoint.com/c/GDBhmnvpkJl

Tu peux rajouter des noms et modifier comme tu veux les 2 colonnes.
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 !