Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associées...

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 !

alias_2003

XLDnaute Occasionnel
Bonjour,
J'aimerais si possible déclencher la sélection de cases à cocher présentes sur 2 feuilles différentes... et bien sûr sous conditions... Mon problème est détaillé (mais peut être pas assez clair) dans le fichier joint !
Merci beaucoup de votre aide !
Bonne journée
Amicalement
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonjour alias_2003, le forum,

Tout n'est pas parfaitement clair mais voyez le fichier joint avec ces macros :

Code:
Sub Bonjour()
MsgBox "Bonjour !" 'votre code
End Sub

Sub AuRevoir()
MsgBox "Au revoir !" 'votre code
End Sub

Sub Macro() 'affectée aux cases des 2 feuilles
Dim test As Boolean, o As Object
test = ActiveSheet.CodeName = "Feuil1"
Set o = IIf(test, Feuil1, Feuil4).DrawingObjects(Application.Caller)
If o = 1 Then If test Then Bonjour Else AuRevoir
If ActiveSheet.DrawingObjects("Check Box D") = 1 Then _
  Coche o, IIf(test, Feuil4, Feuil1), IIf(test, "AuRevoir", "Bonjour"), IIf(test, 1, -1)
End Sub

Sub Coche(ob As Object, F As Worksheet, TexteMacro$, sens%)
Dim adr As String, o As Object
adr = ob.TopLeftCell.Address
For Each o In F.DrawingObjects
  If o.TopLeftCell.Offset(, sens).Address = adr Then
    o = ob.Value
    If o = 1 Then Application.Run TexteMacro
    Exit Sub
  End If
Next
End Sub
Notez que Feuil1 et Feuil4 sont les CodeName des 2 feuilles.

A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonjour job75,
Merci beaucoup de ta réponse ! C'est presque ça, je n'ai pas été assez claire ! Une difficulté supplémentaire est qu'à chaque colonne de case est associée une macro différente (soit 3/feuille et 6 en tout).
Est-il possible d'adapter ton code ??
Merci encore de ton aide,
Bonne journée
 
Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,

Pourquoi 6 macros ? Normalement 2 macros doivent être amplement suffisantes.

Dans ce fichier (2) les macros Bonjour et AuRevoir sont paramétrées :

Code:
Sub Bonjour(lettre As String)
MsgBox "Bonjour depuis la colonne " & lettre & " !" 'votre code
End Sub

Sub AuRevoir(lettre As String)
MsgBox "Au revoir depuis la colonne " & lettre & " !" 'votre code
End Sub

Sub Macro() 'affectée aux cases des 2 feuilles
Dim test As Boolean, o As Object, lettre As String
test = ActiveSheet.CodeName = "Feuil1"
Set o = IIf(test, Feuil1, Feuil4).DrawingObjects(Application.Caller)
lettre = Mid(o.TopLeftCell.Address, 2, 1) 'lettre de la colonne
If o = 1 Then If test Then Bonjour lettre Else AuRevoir lettre
If ActiveSheet.DrawingObjects("Check Box D") = 1 Then _
  Coche o, IIf(test, Feuil4, Feuil1), IIf(test, "AuRevoir", "Bonjour"), IIf(test, 1, -1)
End Sub

Sub Coche(ob As Object, F As Worksheet, TexteMacro$, sens%)
Dim adr As String, o As Object
adr = ob.TopLeftCell.Address
For Each o In F.DrawingObjects
  If o.TopLeftCell.Offset(, sens).Address = adr Then
    o = ob.Value
    If o = 1 Then Application.Run TexteMacro, Mid(o.TopLeftCell.Address, 2, 1)
    Exit Sub
  End If
Next
End Sub
Avec la lettre récupérée par chaque macro vous pouvez orienter sur les codes que vous voulez.

Avec des tests If... Then ou des Select Case.

A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,

Ah oui c'est sans doute mieux d'utiliser la lettre (A, B ou C) inscrite en ligne 11 :

Code:
lettre = o.TopLeftCell.Offset(11 - o.TopLeftCell.Row) 'lettre de la colonne
Fichier (3).

A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,

Version (4) avec une seule macro Salut à 2 paramètres :

Code:
Sub Salut(F As Worksheet, lettre As String)
MsgBox IIf(F.CodeName = "Feuil1", "Bonjour", "Au revoir") _
  & " depuis la colonne " & lettre & " !" 'votre code
End Sub

Sub Macro() 'affectée aux cases des 2 feuilles
Dim test As Boolean, o As Object, lettre As String
test = ActiveSheet.CodeName = "Feuil1"
Set o = IIf(test, Feuil1, Feuil4).DrawingObjects(Application.Caller)
lettre = o.TopLeftCell.Offset(11 - o.TopLeftCell.Row) 'lettre de la colonne
If o = 1 Then Salut IIf(test, Feuil1, Feuil4), lettre
If ActiveSheet.DrawingObjects("Check Box D") = 1 Then _
  Coche o, IIf(test, Feuil4, Feuil1), lettre
End Sub

Sub Coche(ob As Object, F As Worksheet, lettre)
Dim lig As Long, col As Integer, o As Object
lig = ob.TopLeftCell.Row
col = Application.Match(lettre, F.Rows(11), 0)
For Each o In F.DrawingObjects
  If o.TopLeftCell.Row = lig And o.TopLeftCell.Column = col Then
    o = ob.Value
    If o = 1 Then Application.Run "Salut", F, lettre
    Exit Sub
  End If
Next
End Sub
Notez les nouveaux paramètres de la macro Coche.

A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,
Merci beaucoup de t'intéresser à mon soucis... dans le fichier joint, j'ai ajouté les macros écrites pour les colonnes A, B et C de chaque feuille. Attention, mon fichier est en cours de construction et mon niveau vba proche du ridicule... Ça complique mon fichier, mais bon...
Je pense que ton code est bon (si à l'occasion, tu pouvais me donner 2-3 explications, parce que je n'ai pas tout compris, loin de là !), il faut que je trouve comment l'adapter !
Merci encore de ton aide,
Bonne journée !
Amicalement

EDIT: désolée, nos messages se sont croisés...
EDIT 17h48 : fichier joint modifié
 

Pièces jointes

Dernière édition:
Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,

J'ai regardé vos macros mais elles sont trop compliquées pour moi. Mon âge sûrement 🙄

Tâchez de les simplifier au maximum et de n'en faire plus qu'une en adaptant ma version (4).

Cette version n'est pas vraiment difficile à comprendre, il suffit d'en avoir saisi le principe.

Prenez votre temps pour l'étudier, et n'oubliez pas l'Aide VBA.

A+
 
Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Re,

Dans cette version (5) j'ai adapté mes macros à vos 6 macros.

Principalement :

- dans mes macros j'utilise maintenant des objets Shape

- j'ai paramétré vos 6 macros avec ces objets, et par ailleurs l'utilisation de ActiveSheet ne convenait plus, j'ai remplacé par Sh.Parent

- enfin j'ai supprimé vos 2 sélections de cellules, et c'est tout.

Nota : pour le 3ème type il peut y avoir division par zéro, revoir la variable Division.

Bonne continuation et A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonjour job75, le forum,
de retour avec une énième question...
J'ai tenté de modifié le fichier précédent pour que, lorsque la checkbox D est cochée, les données entrées "manuellement" dans la feuille active soient automatiquement copiées dans l'autre.
La modif. fonctionne, mais nécessite une "activation" : il faut que j'ai cliqué l'une des cases "A", "B", ou "C" pour mes copies se réalisent ensuite...
Qu'est encore mal fait, mal compris ??

Par ailleurs, est-il possible que lorsque la checkbox D de la feuille active est cochée, qu'elle le soit automatiquement de l'autre feuille et inversement, le fait de décocher l'une décoche l'autre ? Si non, ce n'est pas grave, c'est déjà beaucoup mieux que ce que j'espérais !
Merci beaucoup,
Bonne journée,
A+
 

Pièces jointes

Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonsoir alias_2003,

Je ne vois pas bien l'intérêt de copier les valeurs des plages B12:C29 car elles dépendent de l'état des cases à cocher, a priori différent entre les 2 feuilles.

Enfin... Annulez ce que vous avez fait et affectez cette macro Copie aux 2 cases Check Box D :

Code:
Sub Copie()
Dim test As Boolean, cf
With ActiveSheet
  test = .CodeName = "Feuil1"
  cf = .Shapes("Check Box D").ControlFormat.Value
  IIf(test, Feuil4, Feuil1).Shapes("Check Box D").ControlFormat = cf
  If cf = xlOn Then _
    IIf(test, Feuil4, Feuil1).[B12:C29] = .[B12:C29].Value
End With
End Sub
A+
 
Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonsoir !

Je ne vois pas bien l'intérêt de copier les valeurs des plages B12:C29 car elles dépendent de l'état des cases à cocher, a priori différent entre les 2 feuilles.
en fait, certaines de ces cellules sont contraintes aux choix de la case à cocher (traitement fixe !), mais il est possible d'ajouter le nom de l'échantillon "manuellement" et faire un traitement différent, dépendant des données entrées en D1:F29.
Pas sûre que ce soit clair... si non: je peux préparer un fichier exemple avec des données ! je dois donc me débrouiller pour que la macro "Copie", puisse soit copier le nom et la valeur correspondante entrées "manuellement", soit lancer les macros associées aux lettres si l'une des cases "lettre" est cochée !
Merci beaucoup,
Bonne soirée
A+
 
Re : Sous condition, cocher des cases sur 2 feuilles et déclencher les macros associé

Bonjour job75, le forum
J'ai bien intégré la macro "copie", merci beaucoup !
Par contre, je rencontre les mêmes difficultés que précédemment : à savoir que je dois décocher/cocher la checkbox D pour que les changements soient pris en compte. Où me suis-je trompée ??
Merci beaucoup,
A+
Amicalement


Edit: quelques explications: les 2 pages correspondent à un traitement différent. Il peut s'agir d'échantillons identiques ou différents. C"est pourquoi je ne peux pas faire de lien strict entre les 2 feuilles. Cependant pour me faciliter la vie, j'aimerais quand il s'agit d'échantillons identiques, ne remplir le nom des échantillons (colonnes "B" et "C") que dans un seul des tableaux (feuilles). Ces noms sont entrés "manuellement".
J'ai également des cas particuliers pour chaque traitement (toujours identiques), qui correspondent aux cases à cocher "A", "B" et "C".
Ce qui explique en quoi j'ai besoin de la macro associée aux cases à cocher et de celle appelée "copie".
J'espère que c'est (un peu) plus claire...
Toute suggestion sera la bienvenue, je m'arrache les cheveux depuis ce matin 😉 !
 

Pièces jointes

Dernière édition:
- 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

P
Réponses
4
Affichages
908
Polo94100
P
S
Réponses
2
Affichages
604
sanae_J
S
O
Réponses
5
Affichages
2 K
Olocsob
O
G
  • Question Question
Réponses
9
Affichages
1 K
A
Réponses
2
Affichages
1 K
AntoineLTO
A
D
Réponses
0
Affichages
722
Dédé82
D
Retour