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 :

Fusionner 3 macros pour n'en faire qu'une seule [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 Fusionner 3 macros pour n'en faire qu'une seule
    Bonjour a tous

    Voila je suis face à un problème de fusion de 3 macros qui s’appliquent sur la même feuille, le souci c'est que j'arrive pas à les faire fusionner pour en faire qu'une seule

    Voici donc mes macros

    La première macro qui envoi les données inscrit dans le formulaire vers la feuille BD_Dettesrèglements:

    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
    Private Sub ValiderDettes_Click()
    'Variables qui vont nous servir à alimenter la feuille BD_Dettesrèglements via les données saisies dans l'UserForm
      Dim Ctrl As Control
      Dim r As Integer
      Dim Derligne As Integer
      Dim LigneDebut As Long
     
    With Worksheets("BD_DettesRéglements")
          LigneDebut = 12
          Derligne = .Range("C" & Cells.Rows.Count).End(xlUp).Row + 1
          If .Cells(Derligne - 1, 1).Value = "Total" Then Derligne = Derligne - 1
          For Each Ctrl In AjoutDettes.Controls
            r = Val(Ctrl.Tag)
              If r > 0 Then
                  If Ctrl.Name = "Montant_TextBox" Then
                    .Cells(Derligne, r) = Val(Ctrl)
                    .Cells(Derligne, r).NumberFormat = "#,##0.00"
                  Else
                    .Cells(Derligne, r) = Ctrl
                  End If
              End If
           Next
    End Sub
    La deuxième est pour l'incrémentation numérique qui commence de la ligne 12 colonne B dans la feuille BD_Dettesrèglements:

    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
    Private Sub ValiderDettes_Click()
     
      Dim DerniereLigne As Long
      Dim CtrI As Long
     
    With Worksheets("BD_DettesRéglements")
             LigneDebut = 12
             DerniereLigne = .Cells(.Rows.Count, 3).End(xlUp).Row
             For CtrI = LigneDebut To DerniereLigne
                 If .Cells(CtrI, 3) <> "" Then
                    .Cells(CtrI, 2) = WorksheetFunction.CountA(Range(.Cells(LigneDebut, 12), .Cells(CtrI, 7)))
                 Else
                    .Cells(CtrI, 2) = ""
                 End If
            Next CtrI
       End With
    End Sub
    La troisième est pour tri par ordre alphabétique avec étendu dans la feuille BD_Dettesrèglements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("BD_DettesRéglements").Select
    Range("B12:G" & Derligne).Sort Key1:=Range("C12"), Order1:=xlAscending, Header:=xlYes
    Merci à vous tous

    Cordialement

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 906
    Par défaut
    Juste comme ça : où est la complexité que tu vois dedans ?

    Tu as 3 bouts de codes avec maximum 15 lignes, qui ont le même procédé mais des calculs différents et même sans ce détail, je ne comprend absolument pas où est le problème ?

    Je pense même que tu as perdu plus de temps à poster ta demande que de lire ton code et de voir ce que tu pouvais faire...

  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
    Salut l'ami

    oui tu avais entièrement raison c’était tellement claire que je me suis compliqué la vie moi même hhh

    donc voila au final j'ai réussi à résoudre le problème et voici ce que ça donne

    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
    Private Sub ValiderDettes_Click()
      Dim DerniereLigne As Long
      Dim Derligne As Integer
      Dim LigneDebut As Long
      Dim Ctrl As Control
      Dim CtrI As Long
      Dim r As Integer
     
       With Worksheets("BD_DettesRéglements")
          LigneDebut = 12
          Derligne = .Range("C" & Cells.Rows.Count).End(xlUp).Row + 1
          For Each Ctrl In AjoutDettes.Controls
            r = Val(Ctrl.Tag)
              If r > 0 Then
                  If Ctrl.Name = "Montant_TextBox" Then
                    .Cells(Derligne, r) = Val(Ctrl)
                    .Cells(Derligne, r).NumberFormat = "#,##0.00"
                  Else
                    .Cells(Derligne, r) = Ctrl
                  End If
              End If
           Next
    'Tri par ordre alphabétique
        Sheets("BD_DettesRéglements").Select
        Range("B12:G" & Derligne).Sort Key1:=Range("C12"), Order1:=xlAscending, Header:=xlYes
    'Avec la feuille consernée l'incrémentation numérique commence de la ligne 12 colonne B
          DerniereLigne = .Cells(.Rows.Count, 3).End(xlUp).Row
          For CtrI = LigneDebut To DerniereLigne
              If .Cells(CtrI, 3) <> "" Then
                 .Cells(CtrI, 2) = WorksheetFunction.CountA(Range(.Cells(LigneDebut, 12), .Cells(CtrI, 7)))
              Else
                 .Cells(CtrI, 2) = ""
              End If
          Next CtrI
    'Le message
         If MsgBox("La dette attribuée à (" & ComboBox1 & ") a été ajoutée avec succès voulez-vous enregistrer une autre dette ?", vbYesNo, "Confirmation") = vbYes Then
            Montant_TextBox = ""
            Me.ComboBox1.Clear
            Me.ComboBox1.SetFocus
            Else
            Unload AjoutDettes
         End If
         End With
    End Sub
    Merci encore

    Cordialement

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

Discussions similaires

  1. [XL-2010] Macros pour trié et faire une la somme des valeurs
    Par vaco917 dans le forum Excel
    Réponses: 3
    Dernier message: 02/05/2013, 14h05
  2. Macro pour regrouper plusieurs feuilles en une seule
    Par OLIV420 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2010, 08h36
  3. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21
  4. Réponses: 2
    Dernier message: 11/04/2007, 09h11
  5. [VB6]Superposer des images pour en faire qu'une seule
    Par spikto dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2006, 14h49

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