OVH Cloud OVH Cloud

une macro, et des sous fonctions

14 réponses
Avatar
alain deloin
Bonjour,

Voila j'ai une macro de ce genre:

Sub boucle()
For i = 1 To 12
...
...

Sheets("DONNEES SOURCE").Select

Range("G" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D40"
Range("H" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D41"
Range("I" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D42"
...
...
Range("N" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D47"
Range("O" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D48"
Range("P" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D49"
...
...
Next i
End Sub

Et je me demandais si je pouvais plutot faire appel a un moment dans cette
macro a une sous-procedure, ou je ne sais comment on appelle ca, en lui
passant un parametre, maniere d'alleger un peu le tout, et le separer en
sous programmes? Mais je ne sais ou definir cette sous procedure... Ni
comment lui preciser qu'elle doit attendre un parametre...
Ca donnerait un truc un peu comme ca:

Sub boucle()
For i = 1 To 12
...
...
Sheets("DONNEES SOURCE").Select

SOUS-FONCTION(parametre i)
...
...
Next i
End Sub

Merci de votre aide precieuse a vous tous ;)

AD

4 réponses

1 2
Avatar
Jacky
re...
C'est ma faute...
Enlève les parenthèses à cumuls2 (i, j)
cumuls2 i,j

JJ

"alain deloin" a écrit dans le message
de news:40c1d547$0$15788$
Bon je colle tout le code ;)

Sub boucle()

Application.ScreenUpdating = False
Const nomFeuil As String = "Mois_"

For i = 1 To 2

Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(i + 1)
ActiveSheet.Name = nomFeuil & i
Range("A5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!B" & 7 + i
Range("F5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!C" & 7 + i

Sheets(nomFeuil & i).Select
For j = 0 To 9
cumuls2 (i, j) <<<< c la que ca coince... Je connais pas trop
la

syntaxe pour passer plusieurs params...
Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub cumuls2(passei As Integer, passej As Integer)
Range("E" & 40 + passej).Select
ActiveCell.Formula = "=SUM('DONNEES SOURCE'!" & Chr(Asc("G") +
passej) & "7:" & Chr(Asc("G") + passej) & (8 + passei) & ")"
End Sub




"Jacky" a écrit dans le message de
news:
re....
cumuls2(i,j)
Quesaco
Donne le code qui provoque l'erreur et celui qui envoie les paramètres
Salutations
JJ

"alain deloin" a écrit dans le
message

de news:40c1cebe$0$15787$
okay bon pour une procedure qui prend un seul parametre, ca marche, c
pas


trop dur....
Par contre, j'ai voulu corser un peu la chose et faire un truc dans le
genre:

Private Sub cumuls2(passei As Integer, passej As Integer)

Sheets("test").Select
Range("E" & 40 + passei).Select
patati patata
Range("E" & 40 + passej).Select
patati patata

End Sub

la declaration de la sub ne me fait pas d'erreur, mais si apres dans
une



autre sub je tape

cumuls2(i,j)

Bin il me detecte tout de suite une erreur : compile error: Expected:

Et la je pige pas..

Serais-je une quiche?

AD





"Jacky" a écrit dans le message de
news:
Bonjour Alain

----------
Nom de la procédure+ (paramètre)
Exemple:
masousprocedure(i)
Dans ce cas le nom de la procédure appelée est 'masouprocedure' et
le




paramètre transmis est la valeur de i
Il peut y avoir plusieurs paramètres (i,x,y)
-----------
Dans la procédure masousprocedure
Exemple:
Sub masousprocedure(mavariable as string)
Dans ce cas mavariable aura la valeur de i
----
----
End sub

Bon courage
JJ

"alain deloin" a écrit dans le
message

de news:40c18bef$0$9583$
Bonjour,

Voila j'ai une macro de ce genre:

Sub boucle()
For i = 1 To 12
...
...

Sheets("DONNEES SOURCE").Select

Range("G" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D40"
Range("H" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D41"
Range("I" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D42"
...
...
Range("N" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D47"
Range("O" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D48"
Range("P" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D49"
...
...
Next i
End Sub

Et je me demandais si je pouvais plutot faire appel a un moment
dans





cette
macro a une sous-procedure, ou je ne sais comment on appelle ca,
en





lui
passant un parametre, maniere d'alleger un peu le tout, et le
separer




en
sous programmes? Mais je ne sais ou definir cette sous
procedure...





Ni
comment lui preciser qu'elle doit attendre un parametre...
Ca donnerait un truc un peu comme ca:

Sub boucle()
For i = 1 To 12
...
...
Sheets("DONNEES SOURCE").Select

SOUS-FONCTION(parametre i)
...
...
Next i
End Sub

Merci de votre aide precieuse a vous tous ;)

AD




















Avatar
FxM
Bonjour,

- Si tu forces un format de données (integer) dans cumul2, il faut que
tu dim tes varaibles avec le même format. Si tu fais rien, les variables
sont variant par défaut.
- pour appeler une sub avec des arguments, tu peux utiliser :
call cumuls2(i,j)

Le code expurgé suivant fonctionne chez moi (Win98SE, XL2k pro) :
Sub boucle()
Dim i As Integer, j As Integer
For i = 1 To 2
For j = 0 To 9
Call cumuls2(i, j)
Next j
Next i
Application.ScreenUpdating = True
End Sub

Private Sub cumuls2(passei As Integer, passej As Integer)
Range("E" & 40 + passej).Select
End Sub

@+
FxM







Bon je colle tout le code ;)

Sub boucle()

Application.ScreenUpdating = False
Const nomFeuil As String = "Mois_"

For i = 1 To 2

Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(i + 1)
ActiveSheet.Name = nomFeuil & i
Range("A5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!B" & 7 + i
Range("F5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!C" & 7 + i

Sheets(nomFeuil & i).Select
For j = 0 To 9
cumuls2 (i, j) <<<< c la que ca coince... Je connais pas trop la
syntaxe pour passer plusieurs params...
Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub cumuls2(passei As Integer, passej As Integer)
Range("E" & 40 + passej).Select
ActiveCell.Formula = "=SUM('DONNEES SOURCE'!" & Chr(Asc("G") +
passej) & "7:" & Chr(Asc("G") + passej) & (8 + passei) & ")"
End Sub




"Jacky" a écrit dans le message de
news:

re....
cumuls2(i,j)
Quesaco
Donne le code qui provoque l'erreur et celui qui envoie les paramètres
Salutations
JJ

"alain deloin" a écrit dans le


message

de news:40c1cebe$0$15787$

okay bon pour une procedure qui prend un seul parametre, ca marche, c



pas

trop dur....
Par contre, j'ai voulu corser un peu la chose et faire un truc dans le
genre:

Private Sub cumuls2(passei As Integer, passej As Integer)

Sheets("test").Select
Range("E" & 40 + passei).Select
patati patata
Range("E" & 40 + passej).Select
patati patata

End Sub

la declaration de la sub ne me fait pas d'erreur, mais si apres dans une
autre sub je tape

cumuls2(i,j)

Bin il me detecte tout de suite une erreur : compile error: Expected: >>>
Et la je pige pas..

Serais-je une quiche?

AD





"Jacky" a écrit dans le message de
news:

Bonjour Alain

----------
Nom de la procédure+ (paramètre)
Exemple:
masousprocedure(i)
Dans ce cas le nom de la procédure appelée est 'masouprocedure' et le
paramètre transmis est la valeur de i
Il peut y avoir plusieurs paramètres (i,x,y)
-----------
Dans la procédure masousprocedure
Exemple:
Sub masousprocedure(mavariable as string)
Dans ce cas mavariable aura la valeur de i
----
----
End sub

Bon courage
JJ

"alain deloin" a écrit dans le


message

de news:40c18bef$0$9583$

Bonjour,

Voila j'ai une macro de ce genre:

Sub boucle()
For i = 1 To 12
...
...

Sheets("DONNEES SOURCE").Select

Range("G" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D40"
Range("H" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D41"
Range("I" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D42"
...
...
Range("N" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D47"
Range("O" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D48"
Range("P" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D49"
...
...
Next i
End Sub

Et je me demandais si je pouvais plutot faire appel a un moment dans



cette

macro a une sous-procedure, ou je ne sais comment on appelle ca, en




lui

passant un parametre, maniere d'alleger un peu le tout, et le





separer

en

sous programmes? Mais je ne sais ou definir cette sous procedure...





Ni

comment lui preciser qu'elle doit attendre un parametre...
Ca donnerait un truc un peu comme ca:

Sub boucle()
For i = 1 To 12
...
...
Sheets("DONNEES SOURCE").Select

SOUS-FONCTION(parametre i)
...
...
Next i
End Sub

Merci de votre aide precieuse a vous tous ;)

AD


















Avatar
Jacky
re..
et
Private Sub cumuls2(passei As Integer, passej As Integer)
Supprime AS integer
Ou dim les dans la procedure de départ

Sur ce Bon WE
JJ

"Jacky" a écrit dans le message de
news:
re...
C'est ma faute...
Enlève les parenthèses à cumuls2 (i, j)
cumuls2 i,j

JJ

"alain deloin" a écrit dans le
message

de news:40c1d547$0$15788$
Bon je colle tout le code ;)

Sub boucle()

Application.ScreenUpdating = False
Const nomFeuil As String = "Mois_"

For i = 1 To 2

Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(i + 1)
ActiveSheet.Name = nomFeuil & i
Range("A5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!B" & 7 + i
Range("F5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!C" & 7 + i

Sheets(nomFeuil & i).Select
For j = 0 To 9
cumuls2 (i, j) <<<< c la que ca coince... Je connais pas
trop


la
syntaxe pour passer plusieurs params...
Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub cumuls2(passei As Integer, passej As Integer)
Range("E" & 40 + passej).Select
ActiveCell.Formula = "=SUM('DONNEES SOURCE'!" & Chr(Asc("G")
+


passej) & "7:" & Chr(Asc("G") + passej) & (8 + passei) & ")"
End Sub




"Jacky" a écrit dans le message de
news:
re....
cumuls2(i,j)
Quesaco
Donne le code qui provoque l'erreur et celui qui envoie les paramètres
Salutations
JJ

"alain deloin" a écrit dans le
message

de news:40c1cebe$0$15787$
okay bon pour une procedure qui prend un seul parametre, ca marche,
c




pas
trop dur....
Par contre, j'ai voulu corser un peu la chose et faire un truc dans
le




genre:

Private Sub cumuls2(passei As Integer, passej As Integer)

Sheets("test").Select
Range("E" & 40 + passei).Select
patati patata
Range("E" & 40 + passej).Select
patati patata

End Sub

la declaration de la sub ne me fait pas d'erreur, mais si apres dans
une



autre sub je tape

cumuls2(i,j)

Bin il me detecte tout de suite une erreur : compile error:
Expected:





Et la je pige pas..


Serais-je une quiche?

AD





"Jacky" a écrit dans le message de
news:
Bonjour Alain

----------
Nom de la procédure+ (paramètre)
Exemple:
masousprocedure(i)
Dans ce cas le nom de la procédure appelée est 'masouprocedure' et
le




paramètre transmis est la valeur de i
Il peut y avoir plusieurs paramètres (i,x,y)
-----------
Dans la procédure masousprocedure
Exemple:
Sub masousprocedure(mavariable as string)
Dans ce cas mavariable aura la valeur de i
----
----
End sub

Bon courage
JJ

"alain deloin" a écrit dans
le





message
de news:40c18bef$0$9583$
Bonjour,

Voila j'ai une macro de ce genre:

Sub boucle()
For i = 1 To 12
...
...

Sheets("DONNEES SOURCE").Select

Range("G" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D40"
Range("H" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D41"
Range("I" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D42"
...
...
Range("N" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D47"
Range("O" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D48"
Range("P" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D49"
...
...
Next i
End Sub

Et je me demandais si je pouvais plutot faire appel a un moment
dans





cette
macro a une sous-procedure, ou je ne sais comment on appelle ca,
en





lui
passant un parametre, maniere d'alleger un peu le tout, et le
separer




en
sous programmes? Mais je ne sais ou definir cette sous
procedure...





Ni
comment lui preciser qu'elle doit attendre un parametre...
Ca donnerait un truc un peu comme ca:

Sub boucle()
For i = 1 To 12
...
...
Sheets("DONNEES SOURCE").Select

SOUS-FONCTION(parametre i)
...
...
Next i
End Sub

Merci de votre aide precieuse a vous tous ;)

AD
























Avatar
alain deloin
ok je teste ca a mon retour, faut que je m'absente.
Merci en tous cas.


"Jacky" a écrit dans le message de
news:
re...
C'est ma faute...
Enlève les parenthèses à cumuls2 (i, j)
cumuls2 i,j

JJ

"alain deloin" a écrit dans le
message

de news:40c1d547$0$15788$
Bon je colle tout le code ;)

Sub boucle()

Application.ScreenUpdating = False
Const nomFeuil As String = "Mois_"

For i = 1 To 2

Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(i + 1)
ActiveSheet.Name = nomFeuil & i
Range("A5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!B" & 7 + i
Range("F5").Select
ActiveCell.Formula = "='DONNEES SOURCE'!C" & 7 + i

Sheets(nomFeuil & i).Select
For j = 0 To 9
cumuls2 (i, j) <<<< c la que ca coince... Je connais pas
trop


la
syntaxe pour passer plusieurs params...
Next j
Next i
Application.ScreenUpdating = True

End Sub

Private Sub cumuls2(passei As Integer, passej As Integer)
Range("E" & 40 + passej).Select
ActiveCell.Formula = "=SUM('DONNEES SOURCE'!" & Chr(Asc("G")
+


passej) & "7:" & Chr(Asc("G") + passej) & (8 + passei) & ")"
End Sub




"Jacky" a écrit dans le message de
news:
re....
cumuls2(i,j)
Quesaco
Donne le code qui provoque l'erreur et celui qui envoie les paramètres
Salutations
JJ

"alain deloin" a écrit dans le
message

de news:40c1cebe$0$15787$
okay bon pour une procedure qui prend un seul parametre, ca marche,
c




pas
trop dur....
Par contre, j'ai voulu corser un peu la chose et faire un truc dans
le




genre:

Private Sub cumuls2(passei As Integer, passej As Integer)

Sheets("test").Select
Range("E" & 40 + passei).Select
patati patata
Range("E" & 40 + passej).Select
patati patata

End Sub

la declaration de la sub ne me fait pas d'erreur, mais si apres dans
une



autre sub je tape

cumuls2(i,j)

Bin il me detecte tout de suite une erreur : compile error:
Expected:





Et la je pige pas..


Serais-je une quiche?

AD





"Jacky" a écrit dans le message de
news:
Bonjour Alain

----------
Nom de la procédure+ (paramètre)
Exemple:
masousprocedure(i)
Dans ce cas le nom de la procédure appelée est 'masouprocedure' et
le




paramètre transmis est la valeur de i
Il peut y avoir plusieurs paramètres (i,x,y)
-----------
Dans la procédure masousprocedure
Exemple:
Sub masousprocedure(mavariable as string)
Dans ce cas mavariable aura la valeur de i
----
----
End sub

Bon courage
JJ

"alain deloin" a écrit dans
le





message
de news:40c18bef$0$9583$
Bonjour,

Voila j'ai une macro de ce genre:

Sub boucle()
For i = 1 To 12
...
...

Sheets("DONNEES SOURCE").Select

Range("G" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D40"
Range("H" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D41"
Range("I" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D42"
...
...
Range("N" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D47"
Range("O" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D48"
Range("P" & 7 + i).Select
ActiveCell.Formula = "='" & nomFeuil & i & "'!D49"
...
...
Next i
End Sub

Et je me demandais si je pouvais plutot faire appel a un moment
dans





cette
macro a une sous-procedure, ou je ne sais comment on appelle ca,
en





lui
passant un parametre, maniere d'alleger un peu le tout, et le
separer




en
sous programmes? Mais je ne sais ou definir cette sous
procedure...





Ni
comment lui preciser qu'elle doit attendre un parametre...
Ca donnerait un truc un peu comme ca:

Sub boucle()
For i = 1 To 12
...
...
Sheets("DONNEES SOURCE").Select

SOUS-FONCTION(parametre i)
...
...
Next i
End Sub

Merci de votre aide precieuse a vous tous ;)

AD
























1 2