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 Sub

J'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 Sub

J'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 _
        :=xlSortNormal

J'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 ....

12eloise.xlsb (13.26 Ko)

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 !

Rechercher des sujets similaires à "appeler macro conservant variable definie prealable"