OVH Cloud OVH Cloud

transmettre Constante entre deux Sub

2 réponses
Avatar
Vader
Bonjour,

Je n'arrive pas à transmettre une constante dans une autre Sub.

Je m'explique, j'ai contrui une fonction (pour effectuer une opération
répetitive) ou un seul paramètre varie (i).

Je veux définir (i) puis lancer cette fonction.

Problème : Impossible de transmettre la valeur de i. Je passe par une
Constante, mais elle est remise à "Empty" au démarrage de la Function.

Voilà où j'en suis ...

Antoine


=====================================================


Public Sub Creation_Rapport_DATA()

Application.ScreenUpdating = False

Sheets("CONTROLS DATA").Copy After:=Sheets("Entitée - Devise")
Sheets("CONTROLS DATA (2)").Name = "Rapport Err. DATA"

'Fin Creation Onglet de Rapport
'------------------------

Const Vali As Long = 26

Routine_Supp



End Sub

'------------------------
' ROUTINE SUPP
'------------------------

Public Function Routine_Supp()

Dim k As Long
Dim l As Long
Dim Vali As Long

For i = Vali To Sheets("Rapport Err. DATA").UsedRange.Rows.Count
For j = 5 To Sheets("Rapport Err. DATA").UsedRange.Columns.Count

11
If Cells(i, j) = "0" Then
k = i - 7
l = i + 3
Range(Cells(k, j), Cells(l, j)).Select
Selection.Delete Shift:=xlToLeft
If Cells(i, j) = "0" Then GoTo 11

Exit For
End If
Next
Next


End Function

'------------------------
' FIN ROUTINE SUPP
'------------------------

2 réponses

Avatar
anonymousA
Bonjour,

Ecrire dans la section de déclaration du module ( en haut du module)

Dim vali as long

Dans ces conditions, la valeur de vali ne sera pas perdue lors d'appels
successifs.

A+
Avatar
michdenis
Bonjour Vader,

Essaie comme ceci :

'-----------------------------------
Public Sub Creation_Rapport_DATA()

Application.ScreenUpdating = False

Sheets("CONTROLS DATA").Copy After:=Sheets("Entitée - Devise")
Sheets("CONTROLS DATA (2)").Name = "Rapport Err. DATA"

'Fin Creation Onglet de Rapport
'------------------------

Const Vali As Long = 26
Routine_Supp Vali
End Sub

'-----------------------------------
Public Function Routine_Supp(ByVal Vali As Long)

Dim k As Long
Dim l As Long


For i = Vali To Sheets("Rapport Err. DATA").UsedRange.Rows.Count
For j = 5 To Sheets("Rapport Err. DATA").UsedRange.Columns.Count

11
If Cells(i, j) = "0" Then
k = i - 7
l = i + 3
Range(Cells(k, j), Cells(l, j)).Select
Selection.Delete Shift:=xlToLeft
If Cells(i, j) = "0" Then GoTo 11

Exit For
End If
Next
Next
End Function
'-----------------------------------


Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

Je n'arrive pas à transmettre une constante dans une autre Sub.

Je m'explique, j'ai contrui une fonction (pour effectuer une opération
répetitive) ou un seul paramètre varie (i).

Je veux définir (i) puis lancer cette fonction.

Problème : Impossible de transmettre la valeur de i. Je passe par une
Constante, mais elle est remise à "Empty" au démarrage de la Function.

Voilà où j'en suis ...

Antoine


====================================================

Public Sub Creation_Rapport_DATA()

Application.ScreenUpdating = False

Sheets("CONTROLS DATA").Copy After:=Sheets("Entitée - Devise")
Sheets("CONTROLS DATA (2)").Name = "Rapport Err. DATA"

'Fin Creation Onglet de Rapport
'------------------------

Const Vali As Long = 26

Routine_Supp



End Sub

'------------------------
' ROUTINE SUPP
'------------------------

Public Function Routine_Supp()

Dim k As Long
Dim l As Long
Dim Vali As Long

For i = Vali To Sheets("Rapport Err. DATA").UsedRange.Rows.Count
For j = 5 To Sheets("Rapport Err. DATA").UsedRange.Columns.Count

11
If Cells(i, j) = "0" Then
k = i - 7
l = i + 3
Range(Cells(k, j), Cells(l, j)).Select
Selection.Delete Shift:=xlToLeft
If Cells(i, j) = "0" Then GoTo 11

Exit For
End If
Next
Next


End Function

'------------------------
' FIN ROUTINE SUPP
'------------------------