macro pour création case à cocher

  • Initiateur de la discussion Initiateur de la discussion letroubadour
  • 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 !

letroubadour

XLDnaute Occasionnel
bonjour à tous

je cherche à créer une macro pour afficher une case à cocher en fonction d'un critère
dans l'onglet "01" si AG =1, alors création de la case à cocher sous "soir" dans la colonne M, la cellule liée est en AE et suppression de la case à cocher lors de l'appui du bouton "effacer"
cette macro doit se réaliser sur les 12 onglet, "01, 02, ........., 12"

merci

RAPHAEL
 

Pièces jointes

Bonjour
avec tout le code que tu as déjà écrit, tu devrais quand meme etre capable de modifier toi meme et d'ajouter LA ligne qui va bien
pour déplacer à droite.. suffit d'utiliser la bonne mise en forme de la colonne : Aligné à droite
et où sont passées les cases de la colonne G ?
 

Pièces jointes

bonjour

merci pour ta réponse mais je n'y connais rien en macro
et où sont passées les cases de la colonne G ?
elles ont disparu dans le poste 10 mais ça n'a pas d'importance

il y a quelque chose qui ne va pas, si j'appuie en M8 tout disparait en M8

et je voudrais également que lorsque j'appuie sur le bouton effacer, que les cases en M disparaissent également

merci
 

Pièces jointes

Bonjour

il faut etre patient...

1) si je comprend bien, tu n'es pas à l'origine de toutes les macros ==> ca aurait été bien de le préciser dès le départ, ca nous évite de te proposer des choses en pensant que tu les comprends direct: ca nous force aussi à expliquer notre code.
2) il faut que tu comprennes ce qui suit:
les Options Bouttons que ton code place sur Non adm/adm et les tarifs de nuitée; sont des "controles" que tu peux placer n'importe où sur la feuille
et, dans ton cas, leur nom commence toujours par "b" ==> plus facile pour les retrouver et les supprimer (voir ta macro effacerbox)

le controle case a cocher existe également, mais comme dit dans les premiers posts, ca va te faire un fichier excel très lourd

donc au lieu de mettre des controles, j'ai remplacé par un caractère windings dans la cellule souhaitée (comme ce sont de simples caractères, on ne peut les mettre que dans les cellules)
à chaque fois que tu cliques sur une case (en fait, tu cliques juste sur une cellule dont le contenu est un "caractère case") une macro évènementielle est déclenchée
et selon le contenu et la cellule selectionnée, elle remplace le caractère "case" par "case cochée" et vice versa,
elle met aussi VRAI ou FAUX en colonne AE
ou elle efface tout


3) les évènements sont codés directement dans la feuille concernée
feuille_Change
Feuill_SelectionChange
Feuille_activate......

donc, comme tu as 12 feuilles de mois, il faut que le meme code soit écrit dans TOUTES les feuilles

l'évènement appelle à son tour une macro (PutCaseàCocher)
cette macro est elle écrite dans un module standard

4) dans le fichier ci joint:
les "cases à cocher" sont mises en colonne G et M
si la case en colonne M est cochée, alors VRAI en AE, sinon FAUX
si tu effaces une destination, les cases à cocher sont effacées ainsi que la colonne AE
si tu cliques sur le bouton Effacer, TOUTE la feuille est effacée

si tu cliques en ligne 8, il n'y a plus de problème

va voir le code, j'y ai mis des commentaires
d'abord celui d'une des feuilles
avec les deux évènements
feuille_calculate
feuille_Change

ensuite celui de la macro "putCaseAcocher" dans le module "m_Utiles"
 

Pièces jointes

Bonjour le fil,


Bonjour

...
donc, comme tu as 12 feuilles de mois, il faut que le meme code soit écrit dans TOUTES les feuilles
...
vgendron
On peut mettre une seule procédure dans ThisWorkBook, non?
Un truc du genre ci-dessous (ce qui évite de reproduire le code sur les 12 feuilles)
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Select Case Sh.Name
Case 1 To 12
If Not Intersect(Target, Sh.Range("AG:AG")) Is Nothing And Target = 1 Then
    With Target.Offset(0, -2)
    .Font.Name = "Wingdings": .Font.Size = 10
    .Value = "o"
    End With
End If
Case Else
Exit Sub
End Select
Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Sh.Range("AE:AE")) Is Nothing And Target <> "" Then
    Target = IIf(Target = "x", "o", "x")
    Target.Offset(0, -1).Select
End If
Application.EnableEvents = True
End Sub
EDITION: Ah, zut, j'ai oublié de mettre le Select Case dans la seconde procédure.
Mais je suppose que tu vois déjà où je voulais en venir avec un seul Select Case 😉
 
salut @Staple1600
et ouiii !!!
en fait.. sans le savoir, tu viens de répondre à une question que je me suis souvent posée sans vraiment chercher à y répondre..
comment n'avoir qu'un seul code évènementiel qui fonctionnerait pour n'importe quelle feuille ! :-D
ThisWorkbook !! évidemment ! :-D
 
- 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

Réponses
10
Affichages
268
Réponses
18
Affichages
1 K
Réponses
6
Affichages
433
Réponses
11
Affichages
1 K
Réponses
2
Affichages
598
Retour