Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même façon), j'ai des macros évènementielles qui s'exécutent pour chaque onglet. Elles sont identiques, seules des plages nommées sont différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal Bouton_Code As String, Avancement)
With Sheets(F_Index)
.Unprotect
Cellule = UCase(Cellule)
If Cellule = "P" Then 'Coche verte
Cellule.ClearContents
GoTo fin
Else
Cellule = "P": Cellule.Font.ColorIndex = 4
GoTo fin
End If
fin:
If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ que ça coince !
.Protect
Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Le 14/04/22 Í 11:00, ThierryP a écrit :Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même
façon), j'ai des macros évènementielles qui s'exécutent pour chaque
onglet. Elles sont identiques, seules des plages nommées sont
différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont
bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je
coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As
Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal
Bouton_Code As String, Avancement)
With Sheets(F_Index)
    .Unprotect
    Cellule = UCase(Cellule)
    If Cellule = "P" Then 'Coche verte
        Cellule.ClearContents
        GoTo fin
    Else
        Cellule = "P": Cellule.Font.ColorIndex = 4
        GoTo fin
    End If
fin:
    If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ
que ça coince !
    .Protect
    Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne
trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour,
.Bouton_Code
C'est quoi cet objet, un bouton de commande émanant de la barre
"ContrÍ´le formulaire" ou de la barre d'outils d'Activex?
Quel est le nom de ce bouton (voir Í gauche de la barre de formule...
Tu veux écrire ce code dans tous les modules de tes feuilles? Si oui,
pourquoi ne pas écrire ton code dans le ThisWorkbook (un seul endroit).
MichD
Le 14/04/22 Í 11:00, ThierryP a écrit :
Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même
façon), j'ai des macros évènementielles qui s'exécutent pour chaque
onglet. Elles sont identiques, seules des plages nommées sont
différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont
bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je
coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As
Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal
Bouton_Code As String, Avancement)
With Sheets(F_Index)
    .Unprotect
    Cellule = UCase(Cellule)
    If Cellule = "P" Then 'Coche verte
        Cellule.ClearContents
        GoTo fin
    Else
        Cellule = "P": Cellule.Font.ColorIndex = 4
        GoTo fin
    End If
fin:
    If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ
que ça coince !
    .Protect
    Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne
trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour,
.Bouton_Code
C'est quoi cet objet, un bouton de commande émanant de la barre
"ContrÍ´le formulaire" ou de la barre d'outils d'Activex?
Quel est le nom de ce bouton (voir Í gauche de la barre de formule...
Tu veux écrire ce code dans tous les modules de tes feuilles? Si oui,
pourquoi ne pas écrire ton code dans le ThisWorkbook (un seul endroit).
MichD
Le 14/04/22 Í 11:00, ThierryP a écrit :Bonjour le forum et Denis !
Dans un fichier comprenant plusieurs onglets (strucuturés de la même
façon), j'ai des macros évènementielles qui s'exécutent pour chaque
onglet. Elles sont identiques, seules des plages nommées sont
différentes.
Je voudrais écrire une seule macro, lui passer les paramètres qui vont
bien et exécuter le code d'un bouton de l'onglet actif...et lÍ , je
coince !
VoilÍ ce que j'ai commis :
'--------------------------------------------------------------------------------------
Sub Feuille_DoubleClic(ByVal F_Index As Integer, ByRef Cellule As
Range, ByVal Statut As String, ByVal Bouton_Etat As Boolean, ByVal
Bouton_Code As String, Avancement)
With Sheets(F_Index)
    .Unprotect
    Cellule = UCase(Cellule)
    If Cellule = "P" Then 'Coche verte
        Cellule.ClearContents
        GoTo fin
    Else
        Cellule = "P": Cellule.Font.ColorIndex = 4
        GoTo fin
    End If
fin:
    If Bouton_Etat Then Call .Bouton_Code '############### C'est lÍ
que ça coince !
    .Protect
    Call Feuille_Change(F_Index, Cellule, Statut, Avancement)
End With
End Sub
La variable Bouton_Code contient la chaͮne "Bouton_Click()" mais je ne
trouve pas la syntaxe d'appel.
Merci d'avance Í tout contributeur pour un coup de main !
ThierryP
'------------------------------------------------------------------------------------------------------------------
Bonjour,
.Bouton_Code
C'est quoi cet objet, un bouton de commande émanant de la barre
"ContrÍ´le formulaire" ou de la barre d'outils d'Activex?
Quel est le nom de ce bouton (voir Í gauche de la barre de formule...
Tu veux écrire ce code dans tous les modules de tes feuilles? Si oui,
pourquoi ne pas écrire ton code dans le ThisWorkbook (un seul endroit).
MichD
Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque onglet des toggle buttons similaires qui exécutent la même chose sur leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code, Avancement)
Je passe Í ma procédure (qui est dans un module standard) les variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante donc : = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle s'exécute bien sur l'onglet "appelant" sauf que l'appel Í ToggleButton1_Click() de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure "ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est "true" (ma variable Statut) alors lance la procédure du ToggleButton qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque onglet des toggle buttons similaires qui exécutent la même chose sur leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code, Avancement)
Je passe Í ma procédure (qui est dans un module standard) les variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante donc : = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle s'exécute bien sur l'onglet "appelant" sauf que l'appel Í ToggleButton1_Click() de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure "ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est "true" (ma variable Statut) alors lance la procédure du ToggleButton qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque onglet des toggle buttons similaires qui exécutent la même chose sur leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code, Avancement)
Je passe Í ma procédure (qui est dans un module standard) les variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante donc : = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle s'exécute bien sur l'onglet "appelant" sauf que l'appel Í ToggleButton1_Click() de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure "ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est "true" (ma variable Statut) alors lance la procédure du ToggleButton qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
Le 15/04/22 Í 02:18, ThierryP a écrit :Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque
onglet des toggle buttons similaires qui exécutent la même chose sur
leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et
Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de
plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code,
Avancement)
Je passe Í ma procédure (qui est dans un module standard) les
variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante
donc :Â = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille
appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle
s'exécute bien sur l'onglet "appelant" sauf que l'appel Í
ToggleButton1_Click()Â de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure
"ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est
"true" (ma variable Statut) alors lance la procédure du ToggleButton
qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
exemple Í partir de ce je comprends :
Dans le module d'une feuille, tu as une macro de ce type :
Le bouton "commandButton1" émane de la barre d'outils "Activex"
C'est la même chose pour tous les contrÍ´les de cette barre.
'------------------------------
Private Sub CommandButton1_Click()
MsgBox "toto"
End Sub
'------------------------------
Dans un module standard, tu peux appeler la procédure
"CommandButton1_click" Í partir d'une autre procédure
Voici la macro du module standard :
'-----------------------------
Sub toto()
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!feuil1.CommandButton1_Click"
Application.Run LaMacro
End Sub
'-----------------------------
Le Thisworkbook est mis en "'" et "'" parce que dans cela provoque une
erreur si le nom du classeur contient un espace dans son nom.
Le "Feuil1" dans "feuil1.CommandButton1_Click" n'est pas le nom de
l'onglet de la feuille, mais la propriété "Name" de l'objet Worksheet
visible seulement dans l'éditeur de code.
Si tu n'as aucune ligne de code mise en "jaune" pour cette erreur, place
devant l'appel de la procédure une ligne de code simple : Stop cela va
arrêter l'exécution du code et tu utilises la touche F8 (pas Í pas) afin
de terminer la macro. Tu utilises probablement une propriété qui
n'appartient pas Í un objet donné. Désolé, je ne peux pas deviner!
MichD
Le 15/04/22 Í 02:18, ThierryP a écrit :
Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque
onglet des toggle buttons similaires qui exécutent la même chose sur
leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et
Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de
plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code,
Avancement)
Je passe Í ma procédure (qui est dans un module standard) les
variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante
donc :Â = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille
appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle
s'exécute bien sur l'onglet "appelant" sauf que l'appel Í
ToggleButton1_Click()Â de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure
"ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est
"true" (ma variable Statut) alors lance la procédure du ToggleButton
qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
exemple Í partir de ce je comprends :
Dans le module d'une feuille, tu as une macro de ce type :
Le bouton "commandButton1" émane de la barre d'outils "Activex"
C'est la même chose pour tous les contrÍ´les de cette barre.
'------------------------------
Private Sub CommandButton1_Click()
MsgBox "toto"
End Sub
'------------------------------
Dans un module standard, tu peux appeler la procédure
"CommandButton1_click" Í partir d'une autre procédure
Voici la macro du module standard :
'-----------------------------
Sub toto()
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!feuil1.CommandButton1_Click"
Application.Run LaMacro
End Sub
'-----------------------------
Le Thisworkbook est mis en "'" et "'" parce que dans cela provoque une
erreur si le nom du classeur contient un espace dans son nom.
Le "Feuil1" dans "feuil1.CommandButton1_Click" n'est pas le nom de
l'onglet de la feuille, mais la propriété "Name" de l'objet Worksheet
visible seulement dans l'éditeur de code.
Si tu n'as aucune ligne de code mise en "jaune" pour cette erreur, place
devant l'appel de la procédure une ligne de code simple : Stop cela va
arrêter l'exécution du code et tu utilises la touche F8 (pas Í pas) afin
de terminer la macro. Tu utilises probablement une propriété qui
n'appartient pas Í un objet donné. Désolé, je ne peux pas deviner!
MichD
Le 15/04/22 Í 02:18, ThierryP a écrit :Bonjour Denis,
A me relire, effectivement ça manque d'explications.....
J'ai plusieurs onglets, structurés de la même façon, avec sur chaque
onglet des toggle buttons similaires qui exécutent la même chose sur
leurs onglets respectifs.
Il ya également du code dans les Worksheet_Change et
Worksheet_Beforedoubleclick, qui est similaire. Seules les noms de
plage sur lesquelles s'exécute le code sont différents.
Dans le Worksheet_Change, j'ai placé cette ligne :
Call Feuille_DoubleClic(Feuille, Cible, Statut, Etat, Nom_Code,
Avancement)
Je passe Í ma procédure (qui est dans un module standard) les
variables suivantes :
Feuille : index de la feuille "appelante"
Cible : = Target
Statut : booléen de l'état du toggle (je passe "True")
Nom_Code : le nom de la procédure du toggle de la feuille appelante
donc :Â = "ToggleButton1_click()"
Avancement : le nom de la plage nommée Í traiter dans la feuille
appelante
La procédure "générique" (Feuille_DoubleClic) fait le job, elle
s'exécute bien sur l'onglet "appelant" sauf que l'appel Í
ToggleButton1_Click()Â de cet onglet crée une erreur 438.
J'ai bien supprimé le "Private" devant le nom de la procédure
"ToggleButton1-Click() afin ma procédure puisse la voir.
Je ne sais pas dire Í ma procédure : si l'état du ToggleButton est
"true" (ma variable Statut) alors lance la procédure du ToggleButton
qui est sur l'onglet actif.
J'espère que j'ai été un peu plus clair !
ThierryP
exemple Í partir de ce je comprends :
Dans le module d'une feuille, tu as une macro de ce type :
Le bouton "commandButton1" émane de la barre d'outils "Activex"
C'est la même chose pour tous les contrÍ´les de cette barre.
'------------------------------
Private Sub CommandButton1_Click()
MsgBox "toto"
End Sub
'------------------------------
Dans un module standard, tu peux appeler la procédure
"CommandButton1_click" Í partir d'une autre procédure
Voici la macro du module standard :
'-----------------------------
Sub toto()
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!feuil1.CommandButton1_Click"
Application.Run LaMacro
End Sub
'-----------------------------
Le Thisworkbook est mis en "'" et "'" parce que dans cela provoque une
erreur si le nom du classeur contient un espace dans son nom.
Le "Feuil1" dans "feuil1.CommandButton1_Click" n'est pas le nom de
l'onglet de la feuille, mais la propriété "Name" de l'objet Worksheet
visible seulement dans l'éditeur de code.
Si tu n'as aucune ligne de code mise en "jaune" pour cette erreur, place
devant l'appel de la procédure une ligne de code simple : Stop cela va
arrêter l'exécution du code et tu utilises la touche F8 (pas Í pas) afin
de terminer la macro. Tu utilises probablement une propriété qui
n'appartient pas Í un objet donné. Désolé, je ne peux pas deviner!
MichD