IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Simplification d'une macro déjà fonctionnelle


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut Simplification d'une macro déjà fonctionnelle
    Bonjour à tous

    Voila ma question est simple j'ai la macro ci-dessous qui fonctionne très bien le seule soucis je la trouve trop longue donc existe t-il un moyen de la rendre simple le maximum possible

    Voici ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub Extraire()
      [b12:g1048576].Clear
      Sheets("BD_DettesRéglements").Range("B11:G1048576").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("F_Dettes_Réglements!Criteria"), CopyToRange:=Range("B11:G11")
      [G1048576].End(xlUp).Offset(1, 0).Select
      ActiveCell.Offset(, -1) = "Total"
      If ActiveCell.Row > 12 Then
         ActiveCell = "=SUM(G12:G" & ActiveCell.Offset(-1, 0).Row & ")"
      End If
      '---- présentation
      derlig = [d1048576].End(xlUp).Row
      For lig = 12 To derlig
        With Cells(lig, "b").Resize(, 6)
            .Interior.ColorIndex = 19
            .Borders.LineStyle = xlContinuous
            If Cells(lig, "d").Value = "Dette" Then
                .Font.ColorIndex = 3
            ElseIf Cells(lig, "d").Value = "Règlement" Then
                .Font.ColorIndex = 5
            End If
        End With
      Next lig
      Set champ = Cells(derlig, "f").Offset(1, 0)
      champ.Borders.LineStyle = xlContinuous
      champ.HorizontalAlignment = xlGeneral
      champ.HorizontalAlignment = xlCenter
      champ.VerticalAlignment = xlCenter
      champ.Interior.ColorIndex = 6
      champ.Font.Bold = True
      With champ.Font
      .Name = "Arial"
      .Size = 12
      End With
      Set champ2 = Cells(derlig, "f").Offset(1, 1)
      champ2.Borders.LineStyle = xlContinuous
      champ2.HorizontalAlignment = xlGeneral
      champ2.VerticalAlignment = xlCenter
      champ2.Interior.ColorIndex = 6
      champ2.Font.Bold = True
      With champ2.Font
      .Name = "Arial"
      .Size = 12
      End With
      Range("A1").Select
    End Sub
    Merci mes amis

    Cordialement

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut A le bon enregistrement de macro
    l'enregistrement de macro.....
    je pense pas que l'on puisse raccourcir significativement ce code car il ya bcp de petites taches et de conditions donc tu est obligé de les executé. On peut souvent raccourcir quand ce sont des fonctions deja existantes ou que la tache se repete, ca c'est principalement des petites taches bien precises.
    Dsl peut etre quelqu'un de bien meilleur te proposera eventuellement de revoir carrement le code .
    Allez le RC LEns

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    je laisse les 5 ou 6 ligne qu'on peut encore gagner à d'autres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Extraire()
    [b12:g1048576].Clear
    Sheets("BD_DettesRéglements").Range("B11:G1048576").AdvancedFilter Action:=xlFilterCopy, _
          CriteriaRange:=Range("F_Dettes_Réglements!Criteria"), CopyToRange:=Range("B11:G11")
    [G1048576].End(xlUp).Offset(1, 0).Select
    ActiveCell.Offset(, -1) = "Total"
    If ActiveCell.Row > 12 Then
       ActiveCell = "=SUM(G12:G" & ActiveCell.Offset(-1, 0).Row & ")"
    End If
    '---- présentation
    derlig = [d1048576].End(xlUp).Row
    For lig = 12 To derlig
      With Cells(lig, "b").Resize(, 6)
          .Interior.ColorIndex = 19
          .Borders.LineStyle = xlContinuous
          If Cells(lig, "d").Value = "Dette" Then
              .Font.ColorIndex = 3
          ElseIf Cells(lig, "d").Value = "Règlement" Then
              .Font.ColorIndex = 5
          End If
      End With
    Next lig
    For i = 0 To 1
        Set champ = Cells(derlig, "f").Offset(1, i)
        With champ
            .Borders.LineStyle = xlContinuous
            .HorizontalAlignment = xlGeneral
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Interior.ColorIndex = 6
            .Font.Bold = True
            With .Font
                .Name = "Arial"
                .Size = 12
            End With
        End With
    Next i
    Range("A1").Select
    End Sub

Discussions similaires

  1. [XL-2007] Ajouter une condition à une macro de suppression déjà fonctionnelle
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/06/2015, 20h40
  2. [XL-2007] Ajout d'une ligne qui trace les bordure et remplissage à une macro déjà fonctionnelle
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/05/2015, 03h11
  3. [XL-2007] Ajouter une ligne qui trace les bordures à une macro déjà fonctionnelle
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/05/2015, 13h37
  4. Simplification d'une macro
    Par teddy72000 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/02/2011, 18h48
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo