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 :

Simplifier une macro [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut Simplifier une macro
    Bonjour à tous

    voila je réalisé une macro de tri par ordre alphabétique avec l'enregistreur de macro excel et je cherche à la simplifier le maximum possible

    Voici la 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
    ActiveWorkbook.Worksheets("Liste_Fournisseurs").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Liste_Fournisseurs").Sort.SortFields.Add Key:= _
            Range("D12:D" & Derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        ActiveWorkbook.Worksheets("Liste_Fournisseurs").Sort.SortFields.Add Key:= _
            Range("C12:C" & Derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortTextAsNumbers
        With ActiveWorkbook.Worksheets("Liste_Fournisseurs").Sort
            .SetRange Range("B11:D" & Derligne)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Merci à vous tous

    Cordialement

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Si la commande SORT te convient :

    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
    Sub Tri()
     
     Set Wb = ThisWorkbook
     Set f = Wb.Worksheets("Liste_Fournisseurs")
     Derligne = f.Range("A" & Rows.Count).End(xlUp).Row
     
     Set tableau = f.Range("B11:D" & Derligne)
     
        colKey1 = 3
        colKey2 = 2
     
        tableau.Sort Key1:=tableau.Cells(2, colKey1), Key2:=tableau.Cells(2, colKey2), _
                     Order1:=xlAscending, Order2:=xlAscending, Header:=xlYes, _
                     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub

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

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci Beaucoup Docmarti

    C'est bien ce que je cherchais et au test ça fonctionne très bien

    Et juste pour le partage voici ma macro en la fusionnant avec l'ensemble de mon code

    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
    Private Sub AjoutNouveauFournisseur_Click()
     
      Dim Ctrl As Control
      Dim r As Integer
      Dim Derligne As Integer
      Dim LigneDebut As Long
     
      'Si le Fourniseurs_TextBox est vide ou c'est une valeur numérique
      If Trim(Fourniseurs_TextBox) = "" Or IsNumeric(Fourniseurs_TextBox) Then
      'Alors arrêt avec ce message en sortant de la boucle et en retourant sur Fourniseurs_TextBox
      MsgBox "Votre cellule est vide ou en format incorrecte! Veuillez le redéfinir", vbCritical
      On Error GoTo 0: Fourniseurs_TextBox.SetFocus: Exit Sub
      End If
      With Worksheets("Liste_Fournisseurs")
          LigneDebut = 12
          Derligne = .Range("C" & Cells.Rows.Count).End(xlUp).Row + 1
            For Each Ctrl In AjoutFournisseurs.Controls
            r = Val(Ctrl.Tag)
                    If r > 0 Then .Cells(Derligne, r) = Ctrl
            Next
     
          Fourniseurs_TextBox = ""
          Fourniseurs_TextBox.SetFocus
       End With
     
       'Tri par ordre alphabétique
        Set f = Worksheets("Liste_Fournisseurs")
        Derligne = f.Range("C" & Rows.Count).End(xlUp).Row
     
        Set tableau = f.Range("B11:D" & Derligne)
     
        colKey1 = 3
        colKey2 = 2
     
        tableau.Sort Key1:=tableau.Cells(2, colKey1), Key2:=tableau.Cells(2, colKey2), _
                     Order1:=xlAscending, Order2:=xlAscending, Header:=xlYes, _
                     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
        'Actualiser
        Menu.UserForm_Initialize
     
       End Sub

    Merci encore cher ami

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Simplifier une macro
    Par chito79000 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/05/2015, 11h22
  2. [XL-2007] Je cherche à simplifier une macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2015, 04h55
  3. [XL-2010] Simplifier une macro
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 14/04/2015, 14h14
  4. [XL-2003] Meme tache a effectuer sous une macro (possibilité de simplifier ?)
    Par teddy72000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2011, 01h49
  5. {VBA Excel} Simplifier une macro avec une copie
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 14h38

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