Comment bien paramètrer une macro

Résolu
Bonjour à tous, dans mon classeur excel j'ai ce code qui me permet de faire un résumé de mes articles dans une feuille:

Sub Resume_auto(l As Integer, cl As Integer, rcl As Integer)
Application.ScreenUpdating = False
Dim a As Integer
Dim b As Integer
Dim c As String
Dim d As String
Dim e As String
Dim f As String
b = ActiveSheet.Range("C1") 'Nb donné BD
c = ActiveSheet.Range("J1") 'Nom feuille
d = ActiveSheet.Range("G" & l)
e = ActiveSheet.Range("I" & l)
f = ActiveSheet.Range("K" & l)
Sheets("Banque de données").Select
ActiveSheet.Range("A2:A" & Range("A65536").End(xlUp).Row).AutoFilter Field:=1
ActiveSheet.Range("A2:A" & Range("A65536").End(xlUp).Row).AutoFilter Field:=2
ActiveSheet.Range("A2:A" & Range("A65536").End(xlUp).Row).AutoFilter Field:=3
ActiveSheet.Range("A2:A" & Range("A65536").End(xlUp).Row).AutoFilter Field:=4
Sheets(c).Select

a = ActiveSheet.Range("E" & l) + 2
asom = ActiveSheet.Range("F" & l)
Rows("21:21").Copy
Range("A" & a & ":A" & a).Insert Shift:=xlDown
Sheets("Banque de données").Select
ActiveSheet.Range("$A$2:$D$10000").AutoFilter Field:=4
ActiveSheet.Range("A2:A" & Range("A65536").End(xlUp).Row).AutoFilter Field:=4, Criteria1:=Array( _
d, e, f), Operator:=xlFilterValues
Sheets(c).Select
b = ActiveSheet.Range("C1") 'Nb donné BD
a = ActiveSheet.Range("E" & l) + 2
asom = ActiveSheet.Range("F" & l)

Range("A" & a & ":A" & a + asom - 1).Select
Selection.EntireRow.Delete
Rows(cl).Copy
Range("A" & a & ":A" & a + ([C1])).Insert Shift:=xlDown
Sheets("Banque de données").Select
Range("A2:A" & Range("A65536").End(xlUp).Row).Select
Selection.Copy
Sheets(c).Select
Range("D" & a).Select
ActiveSheet.Paste
Rows(a).Select
Selection.Delete Shift:=xlUp
Range("G" & a).Select
ActiveCell.FormulaLocal = "='Nom feuille'!" & rcl
asom = ActiveSheet.Range("F" & l)
If asom = 1 Then
Range("G" & a).Select
Else
Selection.AutoFill Destination:=Range("G" & a & ":G" & asom + a - 1), Type:=xlFillDefault
End If
Application.ScreenUpdating = True
End Sub

Le code fonctionne bien lorsque j'écris mes variable directement dans le code, mais
le seul hic s'est que ce code doit se répéter à plusieurs reprises, donc je crois qu'en écrivant une procédure comme (Sub Resume_auto(l As Integer, cl As Integer, rcl As Integer)) ci-haut se serait plus simple, mais je n'arrive pas à la faire fonctionner en l'écrivant avec le code suivant :

Sub resume_2()
Resume_auto "2", "21", "B4"
End Sub

j'espère n'avoir pas été trop vague :)

Quelqu'un pourrait-il m'éclairer sur problème ? :)

Merci à tous de votre temps!

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    tu melange les string avec les Chifre dur

    Sub resume_2() 
         Resume_auto 2, 21, "B4" 
    End Sub 
    
    Sub Resume_auto(l As Integer, cl As Integer, rcl As String)
    
    End Sub 
    


    A+
    Maurice
    1. Bonjour

      Si tu peux donne un modele de ton fichier car je ne comprend pas tes histoire de flitre
      A+
      Maurice
      1. Voici mon fichier!
        http://cjoint.com/?3BcvPirdkEn

        J'essai maintenant d'écrire le code mais je n'arrive pas a le faire fonctionner. lorsque je clique sur exécution, le mssage suivant s'ouvre :
        erreur d'exécution ' 13': Incompatibilité de type

        Merci beaucoup de ton aide!
        1. Bonjour

          voila un nouveau fichier
          car le tien est bloquer avec un mots de passe
          tu refais ta macro sans les filtre qui ne sert a rien pour le moment

          http://cjoint.com/?3BdoPRY2WiY

          A+
          Maurice
          1. http://cjoint.com/?3BdrHGKsT0i
            Pardonne moi je croyais avoir retirer les code .... :P
            1. Bonjour

              tu a mis en Resolu ?

              Voila un modife de ta macro

              http://cjoint.com/?3BdvJjf58zh

              A+
              Maurice
              1. Oui c'était dans mes définition de variable ( Integrer, String ) que je m'était planter :P Merci beaucoup de ton temps Maurice c'est très apprécié!

                A+ !