Appeler une macro en conservant la variable définie au préalable
Bonjour à tous,
J'ai un fichier avec plusieurs modules.
Module 1:
Sub traitementdonnées1()
Dim prodreal As Variant
prodreal = "PROD REALISEES"
'petite aparté qui n'a rien à voir : j'ai volontairement mis le nom de l'onglet dans une variable car le code initial est très long et je veux pouvoir changer le nom de l'onglet rapidement
Worksheets(prodreal).Activate
numcol = 3
Call TriParColonne
End SubJ'ai ensuite un module 2 avec la macro TriParColonne. Je veux précisément créer une fonction à part de la macro initiale car je l'appelle à plusieurs reprise pour agir dans des onglets différents de mon fichier. Comme son nom l'indique, cette macro va trier le tableau (à taille variable) présent dans l'onglet prodreal dans ce cas là en fonction de la colonne C.
Sub TriParColonne()
Dim derLig, derCol As Integer
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.ActiveSheet
derLig = Cells(Rows.Count, 1).End(xlUp).Row
derCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(1, 1), Cells(derLig, derCol)).Select
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add2 Key:= _
Range(Cells(2, numcol), Cells(derLig, numcol)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ws.Sort
.SetRange Range(Cells(1, 1), Cells(derLig, derCol))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Set wb = Nothing: Set ws = Nothing
End SubJ'utilise numcol pour définir le numéro de colonne qui est à l'origine de mon tri (car numcol n'est pas identique à chaque fois dans mon code complet d'où son utilisation).
Mon problème c'est que, si je met ce deuxième code dans mon module1 cela marche parfaitement, mais quand je le laisse dans mon module 2, le code plante et me dit : Erreur d'éxecution 1004 : Erreur définie par l'application ou par l'objet. Excel me surligne donc en jaune cette ligne :
ws.Sort.SortFields.Add2 Key:= _
Range(Cells(2, numcol), Cells(derLig, numcol)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormalJ'ai l'impression que la variable numcol (numéro de colonne) que j'ai fixé à 3 ne suit pas entre le module 1 et 2 et je ne sais pas comment faire.
Merci d'avance,
Eloïse
il faut déclarer ces variables "Public" tout en haut d'un module, attendez ....
Bonjour,
J'avais essayé ça mais je n'avais mis que numcol, et ça ne marchait pas non plus donc j'avais abandonné.
Cela marche parfaitement, merci beaucoup !