Comment bien paramètrer une macro
Résolu
will_1234
Messages postés
10
Statut
Membre
-
will_1234 -
will_1234 -
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!
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!
A voir également:
- Comment bien paramètrer une macro
- Parametrer chromecast - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Paramétrer double écran - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
8 réponses
Bonjour
tu melange les string avec les Chifre dur
A+
Maurice
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
Bonjour
Si tu peux donne un modele de ton fichier car je ne comprend pas tes histoire de flitre
A+
Maurice
Si tu peux donne un modele de ton fichier car je ne comprend pas tes histoire de flitre
A+
Maurice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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!
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!