Insérer et déclarer un code dans un module

  • Initiateur de la discussion Initiateur de la discussion isa44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

isa44

XLDnaute Occasionnel
Bonsoir , j'ai un code que je veux déplacer dans un module afin de l'utiliser sur plusieurs feuilles.
Ce code fonctionne bien quand il est inscrit dans les feuilles , mais je le déplace dans un module j'ai un problème d'appel de procédure ( apparament sur Target) , alors au secours !!!!!

Code:
Option Explicit
Dim MaValeur As Variant
Dim Target As Range
Dim cel As Variant
Dim cell As Variant
Dim Col As Variant
Dim n As Variant
Dim flag As Boolean
'<<<<<<<<<<<<< pour tous les N° feuilles R V B J <<<<<<<<<<<<<<<<<<<<<
Sub Toute_la_feuille_affectations() 'Controle Affectations de toute la feuille
Application.ScreenUpdating = False

If flag Then Exit Sub
flag = True

If flag And Not Intersect(Target, Range("C6:C26,H6:H30,M6:M37,R6:R39")) Is Nothing Then
    Target.Offset(0, 1) = MaValeur
  End If
  
flag = False
If flag Then Exit Sub
flag = True
 Col = Array("C", "H", "M", "R")
For n = 0 To UBound(Col)
  For Each cel In Range(Col(n) & "1:" & Col(n) & Range(Col(n) & "65536").End(xlUp).Row)
     If cel.Value <> "" And cel.Font.Color <> 8421504 Then
         For Each cell In Sheets("test").Range("C7:C300")
           If cel.Value = cell.Value Then
             cell.Copy Destination:=cel
             cel.Borders.LineStyle = 7
           End If
           
         Next cell
     End If
  Next cel
Next n
End Sub
 
Re : Insérer et déclarer un code dans un module

Bonjour,

Je n'ai pas testé ta procédure, mais tu as sûrement un problème avec cette ligne de code si la procédure
est dans un module standard car l'objet "Target" qui fait référence à une sélection de cellules de la feuille
active n'existe pas, Target est un paramètre d'une procédure événementielle de la feuille de calcul et non
d'un module standard. On peut remplacer "Target" par une variable de type "Range" au besoin selon ce
que tu tentes de faire...


Intersect(Target, Range("C6:C26,H6:H30,M6:M37,R6:R39"))
 
Re : Insérer et déclarer un code dans un module

Dans le code feuille "Feuil7", non onglet "Rose", tu as cette procédure.
Elle appelle la procédure "Toute_la_feuille_affectations"

La procédure "Toute_la_feuille_affectations" est dans le module "Module_Controle_Affectations"

La procédure "Toute_la_feuille_affectations" fait référence à un objet Range "TARGET" qui n'est pas
défini dans la ligne de code suivante :

If flag And Not Intersect(Target, Range("C6:C26,H6:H30,M6:M37,R6:R39")) Is Nothing Then

En d'autres termes, TARGET représente quelle plage de cellules de quelle feuille?
2 possibilités : Tu passes la plage de cellules en paramètres à la procédure OU
Tu définis la variable TARGET dans la procédure
Dim Target As Range
Set Target = Worksheets("Son Nom").Range("A1:G50") 'à titre d'exemple.


N.B. dans le module "Module_Controle_Affectations", tu as une variable qui n'est pas définie : "Référence"

'-------------------------------------
Private Sub Worksheet_Activate()

'aveec d'autres procédures
Toute_la_feuille_affectations

End Sub
'-------------------------------------

P.S. Comme je ne sais pas ce que tu veux faire et le but de ces procédures, je ne peux pas
effectuer la correction.
 
Dernière édition:
Re : Insérer et déclarer un code dans un module

Bonsoir voici ce que j'ai fait :

Code:
Option Explicit
Dim MaValeur As Variant
Dim Target As Range
Dim cel As Variant
Dim cell As Variant
Dim Col As Variant
Dim n As Variant
Dim flag As Boolean
'<<<<<<<<<<<<< pour tous les N° feuilles R V B J <<<<<<<<<<<<<<<<<<<<<
Sub Toute_la_feuille_affectations() 'Controle Affectations de toute la feuille
Dim Target As Range

Application.ScreenUpdating = False
Set Target = ActiveSheet().Range("C6:C26,H6:H30,M6:M37,R6:R39")

If flag Then Exit Sub
flag = True

If flag And Not Intersect(Target, Range("C6:C26,H6:H30,M6:M37,R6:R39")) Is Nothing Then
    Target.Offset(0, 1) = MaValeur
  End If
  
flag = False
If flag Then Exit Sub 'Controle Affectations
flag = True
 Col = Array("C", "H", "M", "R")
For n = 0 To UBound(Col)
  For Each cel In Range(Col(n) & "1:" & Col(n) & Range(Col(n) & "65536").End(xlUp).Row)
     If cel.Value <> "" And cel.Font.Color <> 8421504 Then
         For Each cell In Sheets("test").Range("C7:C300")
           If cel.Value = cell.Value Then
             cell.Copy Destination:=cel
             cel.Borders.LineStyle = 7
           End If
           
         Next cell
     End If
  Next cel
Next n
End Sub

Code:
Private Sub Worksheet_Activate()
Application.EnableEvents = False

Copie_N°_Feuilles_R_V_B_J
Toute_la_feuille_affectations

Application.EnableEvents = True
End Sub

Un fois le classeur ouvert les macros " Copie_N°_Feuilles_R_V_B_J et Toute_la_feuille_affectations " s'exécutent une seule fois ; puis seul " Copie_N°_Feuilles_R_V_B_J " s'exécute à l'activation de la feuille.

Il faut fermer puis rouvrir le classeur pour exécuter à nouveau les 2 macros !!?

Comment exécuter les 2 macros " Copie_N°_Feuilles_R_V_B_J et Toute_la_feuille_affectations " à chaque activation de feuille ?
 
Re : Insérer et déclarer un code dans un module

Ma dernière intervention sur ce fil :

Je le répète, une des procédures que tu veux exécuter utilise "TARGET" c'est-à-dire une plage de cellules.

If flag And Not Intersect(Target, Range("C6:C26,H6:H30,M6:M37,R6:R39")) Is Nothing Then
Sans savoir ce à quoi TARGET (plage de cellules) fait référence, il m'est impossible de t'aider.


Je passe la main à un autre répondeur, peut-être arriverez-vous à établir une meilleure échange!
 
Re : Insérer et déclarer un code dans un module

Bonsoir , en fait cela sert à remettre le format ( fond de cellule , police , souligné ...) correspondant des N° de la feuille "test" sur la feuille qui vient d'être activée.
Lors de la première activation de la feuille "Rose" le code fonctionne ; à la deuxième activation la macro "Toute_la_feuille_affectations" ne fonctionne pas !!!

Je joint le classeur modifié avec son bug.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour