Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Eviter de dupliquer du code

8 réponses
Avatar
Dyj
Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer une
liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.

8 réponses

Avatar
Daniel.C
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer une
liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.


Avatar
Dyj
Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb ne
marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai fait
un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.






Avatar
Dyj
Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la même
feuille, le "call" a une routine définie dans un module de personal.xlsb ne
marche pasr. Erreur: sub routine not found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai fait
un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.






Avatar
Daniel.C
Je n'avais pas compris ton problème; je pensais que c'état le nombre de
feuilles qui te posais problème.
La syntaxe à utiliser est la suivante :

var = Application.Run("Personal.xlsb!MonModule.Maroutine")
Daniel

Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb ne
marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai fait
un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer une
liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.








Avatar
Dyj
Je ferai l'essai ce soir et je te tiendrai au courant. Merci de suivre mmon
pb.

"Daniel.C" a écrit dans le message de
news:
Je n'avais pas compris ton problème; je pensais que c'état le nombre de
feuilles qui te posais problème.
La syntaxe à utiliser est la suivante :

var = Application.Run("Personal.xlsb!MonModule.Maroutine")
Daniel

Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb
ne marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai
fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.












Avatar
Dyj
Merci Daniel, c'est exactement ce que je voulais, n'avoir qu'une seule
routine de traitement quelque soit la feuille. J'ai regardé le help, il me
semble qu'avec Application.run, on ne peut pas passer d'argument à la
routine. Ai je bien interprété ?

"Daniel.C" a écrit dans le message de
news:
Je n'avais pas compris ton problème; je pensais que c'état le nombre de
feuilles qui te posais problème.
La syntaxe à utiliser est la suivante :

var = Application.Run("Personal.xlsb!MonModule.Maroutine")
Daniel

Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb
ne marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai
fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.












Avatar
Daniel.C
On doit pas avoir le même ;-)))
Mon help m'indique qu'on peut passer jusqu'à 30 arguments :
var = Application.Run("Personal.xlsb!MonModule.Maroutine, param1,
param2, param3")
Daniel

Merci Daniel, c'est exactement ce que je voulais, n'avoir qu'une seule
routine de traitement quelque soit la feuille. J'ai regardé le help, il me
semble qu'avec Application.run, on ne peut pas passer d'argument à la
routine. Ai je bien interprété ?

"Daniel.C" a écrit dans le message de
news:
Je n'avais pas compris ton problème; je pensais que c'état le nombre de
feuilles qui te posais problème.
La syntaxe à utiliser est la suivante :

var = Application.Run("Personal.xlsb!MonModule.Maroutine")
Daniel

Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb
ne marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai
fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.














Avatar
Daniel.C
Complément du post précédent :
"Vous ne pouvez pas utiliser d'arguments nommés avec cette méthode. Ils
doivent être transmis par position." sigifie (à mon avis) que tu ne peu
pas écrire :
Application.Run("Personal.xlsb!MonModule.Maroutine, arg1:=var1,
arg5:=var2")
Si tu as des arguments optionnels, pour indiquer le premier et le
cinquième, tu dois mettre :
Application.Run("Personal.xlsb!MonModule.Maroutine, var1,,,,var2")
Daniel

Merci Daniel, c'est exactement ce que je voulais, n'avoir qu'une seule
routine de traitement quelque soit la feuille. J'ai regardé le help, il me
semble qu'avec Application.run, on ne peut pas passer d'argument à la
routine. Ai je bien interprété ?

"Daniel.C" a écrit dans le message de
news:
Je n'avais pas compris ton problème; je pensais que c'état le nombre de
feuilles qui te posais problème.
La syntaxe à utiliser est la suivante :

var = Application.Run("Personal.xlsb!MonModule.Maroutine")
Daniel

Que ce soit dans le "code" la feuille ou dans le "ThisWorkbook" de la mêm
feuille, le "call" a une routine définie dans un module de personal.xlsb
ne marche erreur. Erreur: sub routine nort found.
Il n'y a pas d'erreur sur le nom de sous routine.

"Daniel.C" a écrit dans le message de
news:%
Bonjour.
Dans le module "Thisworkbook",utilise la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)
Daniel

Bonjour,
J'ai un classeur de 12 feuilles identiques. En colonne C, j'ai des
valeurs
ou des cellules vides. Lorsque je sélectionne une cellule vide, j'ai
fait un
peu de code dans la feuille (Worksheet_SelectionChange) pour y insérer
une liste. Ce code se trouve donc
la feuille 1.
Comment puis je utiliser ce code à partir des autres feuilles sans être
obligé de le dupliquer dans chaque feuille.
Si je fait un "Call MaRoutine" que j'ai placée dans un module de
Personal.xlsb, il y a une erreur de compilation.
Merci pour vos réponses.