Galère macro avec développeur

Résolu
eric2027 Messages postés 296 Statut Membre -  
eric2027 Messages postés 296 Statut Membre -
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

26 réponses

  • 1
  • 2
Résumé de la discussion

Problématique centrale : une macro Excel créée avec l’aide d’un développeur doit être simplifiée et permettre, en outre, de sélectionner jusqu’à 5000 lignes, ce qui n’est pas clair pour l’utilisateur. Des réponses variées évoquent des ajustements de suppression de colonnes et lignes, des manipulations de pivot et des filtres, ainsi que des conseils pour gérer les feuilles et les formules. En cas de besoin, certains participants partagent des fichiers et des ajustements proposés, notamment pour éviter les éléments vides et optimiser le TCD, tout en laissant à l’auteur le choix final sur la solution.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    0
  2. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
  3. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Cela vient probablement de ta ligne titre qui a des cellules vides ou identiques.
      0
  4. eric2027 Messages postés 296 Statut Membre 6
     
    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 ?
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Avec juste le code sans connaitre le contexte, c'est impossible d'aller plus loin dans l'adaptation.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eric2027 Messages postés 296 Statut Membre 6
     
    oups, j'ai oublié d'incorporer le code

    https://www.cjoint.com/c/GDskiUul5Js
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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 ?
      0
  7. eric2027 Messages postés 296 Statut Membre 6
     
    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.
    0
  8. eric2027 Messages postés 296 Statut Membre 6
     
    Tu penses que je devrais laisser tomber l'idée d'une macro et continuer manuellement ?
    0
  9. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    0
  10. eric2027 Messages postés 296 Statut Membre 6
     
    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")
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
      0
  11. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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.
      0
    2. eric2027 Messages postés 296 Statut Membre 6
       
      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
      0
    3. eric2027 Messages postés 296 Statut Membre 6
       
      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

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

      Je te remercie

      Bien cordialement
      0
  12. eric2027 Messages postés 296 Statut Membre 6
     
    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

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

    Je te remercie

    Bien cordialement
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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 ?
      0
      1. eric2027 Messages postés 296 Statut Membre 6 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
        0
    2. eric2027 Messages postés 296 Statut Membre 6
       
      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
      0
  13. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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 ;-)
    0
  14. eric2027
     
    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"
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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.

      https://www.cjoint.com/c/GDAqbrt7Gml
      0
  15. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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 ;-)
      0
  16. eric2027 Messages postés 296 Statut Membre 6
     
    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,
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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.
      0
  17. eric2027 Messages postés 296 Statut Membre 6
     
    Mais alors comment puis-je faire pour que mes lignes s'enlèvent avec des noms différents ?
    0
  18. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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.
      0
  19. eric2027 Messages postés 296 Statut Membre 6
     
    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
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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 : https://www.cjoint.com/c/GDBhmnvpkJl

      Tu peux rajouter des noms et modifier comme tu veux les 2 colonnes.
      0
  • 1
  • 2