Case à cocher et calculs conditionnés
Dernière réponse : dans Programmation
Bonjour à tous,
je suis en train d'établir, sur excel 2007, un tableau de simulation d'heures travaillées pour des salariés.
Il arrive parfois que les salariés travaillent les jours fériés et j'aimerai en tenir compte dans ma simulation.
Pour se faire, j'utilise un calcul conditionné en fonction des renseignements d'une colonne "jours fériés travaillés" : oui/non avec la fonction "si"
Tout fonction très bien, mais à la place de devoir écrire oui ou non dans ma colonne, j'aimerai, afin que la présentation soit plus aboutie et puisque je n'ai que deux choix possibles, utiliser des case à cocher.
Est-il possible de conserver mon calcul conditionné en fonction des case à cocher sans devoir utiliser de macro trop complexe ? (je suis débutant!!)
merci de vos précieux renseignements
je suis en train d'établir, sur excel 2007, un tableau de simulation d'heures travaillées pour des salariés.
Il arrive parfois que les salariés travaillent les jours fériés et j'aimerai en tenir compte dans ma simulation.
Pour se faire, j'utilise un calcul conditionné en fonction des renseignements d'une colonne "jours fériés travaillés" : oui/non avec la fonction "si"
Tout fonction très bien, mais à la place de devoir écrire oui ou non dans ma colonne, j'aimerai, afin que la présentation soit plus aboutie et puisque je n'ai que deux choix possibles, utiliser des case à cocher.
Est-il possible de conserver mon calcul conditionné en fonction des case à cocher sans devoir utiliser de macro trop complexe ? (je suis débutant!!)
merci de vos précieux renseignements
Autres pages sur : case cocher calculs conditionnes
Lassé par la pub ? Créez un compte
Meilleure solution
Alors là, je suis très déçu
Je t'ai donné une façon de faire pour ne jamais tomber en panne : utiliser l'enregistreur de macro (1), l'aide en ligne (2), un peu de réflexion (3), puis, éventuellement ce forum (4).
Etape (1)
Ouvre donc un classeur vide.
Démarre l'enregistreur de macro.
Ajoute une case à cocher.
Change sa valeur LinkCell.
Arrête l'enregistreur de macro.
Admire ton oeuvre dans l'éditeur VB :
Etape 2
Moi, j'ai tout compris, je me passe de l'étape 2
Pas toi. Examine avec la touche F1 tous les mots difficiles.
Etape 3
L'étape la plus intéressante !
Alors première constatation, la partie "LinkCell" a été squizée
Sinon, ça fait
Ajouter (Add) un objet OLE (OLEObjects) à la feuille active (ActiveSheet) de type Boîte à cocher (Forms.CheckBox.1) avec pleins de paramètres inutiles, ou pas.
Bon, réfléchissons donc.
Je ne veux pas d'activetruc. En effet, rien ne garantit que je serai sur la bonne feuille lors de l'invocation de la macro.
La feuille, c'est donc la numéro 1 de mon classeur (décision arbitraire, tu fais comme tu veux).
Et je ne veux pas sélectionner mon objet, je veux une variable dessus pour en changer certaines valeurs (LinkCell en l'occurrence) :
En fait, ce n'est pas beau du tout.
Il faudrait mettre la position en paramètre, et la cellule à lier aussi.
Au boulot :
Etudie bien ce code, il y a quelques petites astuces qui pourront te servir ailleurs.
Ton avis ?
(A part me dire que je suis un
de te donner une réponse complète une fois que tu te sois cogné tout le boulot à la main
)
Je t'ai donné une façon de faire pour ne jamais tomber en panne : utiliser l'enregistreur de macro (1), l'aide en ligne (2), un peu de réflexion (3), puis, éventuellement ce forum (4).Etape (1)
Ouvre donc un classeur vide.
Démarre l'enregistreur de macro.
Ajoute une case à cocher.
Change sa valeur LinkCell.
Arrête l'enregistreur de macro.
Admire ton oeuvre dans l'éditeur VB :
(Beurk.)
Sub Macro1() ' ' Macro1 Macro ' Macro enregistrée le 26/11/2009 par Zeb Pour Pimousse-62 ' ' ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=360, Top:=114, Width:=60, Height:=14.25). _ Select End Sub
Etape 2
Moi, j'ai tout compris, je me passe de l'étape 2
Pas toi. Examine avec la touche F1 tous les mots difficiles.
Etape 3
L'étape la plus intéressante !
Alors première constatation, la partie "LinkCell" a été squizée
Sinon, ça fait
Ajouter (Add) un objet OLE (OLEObjects) à la feuille active (ActiveSheet) de type Boîte à cocher (Forms.CheckBox.1) avec pleins de paramètres inutiles, ou pas.
Bon, réfléchissons donc.
Je ne veux pas d'activetruc. En effet, rien ne garantit que je serai sur la bonne feuille lors de l'invocation de la macro.
La feuille, c'est donc la numéro 1 de mon classeur (décision arbitraire, tu fais comme tu veux).
Et je ne veux pas sélectionner mon objet, je veux une variable dessus pour en changer certaines valeurs (LinkCell en l'occurrence) :
Et voilà !
Sub AjouteCoche() Dim coche As OLEObject Set coche = Worksheets(1).OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=360, Top:=114, Width:=60, Height:=14.25) coche.LinkedCell = "E7" End Sub
En fait, ce n'est pas beau du tout.
Il faudrait mettre la position en paramètre, et la cellule à lier aussi.Au boulot :
Sub AjouteCoche(cellule As Range) Dim o As OLEObject Set o = cellule.Worksheet.OLEObjects.Add(ClassType:="Forms.Checkbox.1", _ Left:=cellule.Left, Top:=cellule.Top, _ Width:=cellule.Width, Height:=cellule.Height) o.LinkedCell = cellule.Cells(1).Address End Sub
Etudie bien ce code, il y a quelques petites astuces qui pourront te servir ailleurs.
Ton avis ?
(A part me dire que je suis un
de te donner une réponse complète une fois que tu te sois cogné tout le boulot à la main
)
Salut Pimousse !
Avec moi, pas de solution toute faite, ça te permettra bientôt de ne plus avoir à revendiquer le statut de débutant
Voici donc une piste :
Dans les propriétés de ton contrôle CheckBox, cherche et trouve la propriété LinkedCell. Renseigne-toi (aide d'Excel par exemple) sur son fonctionnement et fais des tests. Il est fort possible que ce soit là une solution élégante à ton problème.
Avec moi, pas de solution toute faite, ça te permettra bientôt de ne plus avoir à revendiquer le statut de débutant
Voici donc une piste :
Dans les propriétés de ton contrôle CheckBox, cherche et trouve la propriété LinkedCell. Renseigne-toi (aide d'Excel par exemple) sur son fonctionnement et fais des tests. Il est fort possible que ce soit là une solution élégante à ton problème.
Salut Zeb,
il me semblait bien pouvoir compter sur toi dans pareil mission !
Je suis un perfectionniste et en matière de programmation, l'à-peu-près n'a pas sa place, alors je me forme... ... de là à sortir du statut de débutant, il y a encore du temps à passer.
Je vais donc me plonger dans l'aide d'excel...
Je trouve pourtant que l'aide d'excel est souvent inabordable pour les débutants, c'est ce qui me vaut le plaisir de t'écrire de temps en temps !
merci et à très bientôt !
il me semblait bien pouvoir compter sur toi dans pareil mission !
Je suis un perfectionniste et en matière de programmation, l'à-peu-près n'a pas sa place, alors je me forme... ... de là à sortir du statut de débutant, il y a encore du temps à passer.
Je vais donc me plonger dans l'aide d'excel...
Je trouve pourtant que l'aide d'excel est souvent inabordable pour les débutants, c'est ce qui me vaut le plaisir de t'écrire de temps en temps !
merci et à très bientôt !
Clique dans ce cas sur la ptite icône grise (ou la blanche), en bas à droite de ton message. J'avais fait un gros smiley, mais il n'est plus à-jour. Il reste quand même pertinent :
![]()
__________________________________
Il est difficile d'y chercher ce qu'on ne connaît pas encore, je te l'accorde. Mais si je te dis quoi y chercher, ça ne va-t'il pas mieux ?

__________________________________
Il est difficile d'y chercher ce qu'on ne connaît pas encore, je te l'accorde. Mais si je te dis quoi y chercher, ça ne va-t'il pas mieux ?
bonjour Zeb,
Les renseignements que tu m'as donnés ont été très pertinents, et effectivement assez simple à mettre en place.
merci pour tout.
J'ai réussi à copié-coller les cases à cocher pour chacun des salariés, mais j'ai dû les paramétrer une par une...
Ce n'est pas bien grave, juste un peu de temps passé. Globalement, j'avance et je te remercie pour ça...
Les renseignements que tu m'as donnés ont été très pertinents, et effectivement assez simple à mettre en place.
merci pour tout.
J'ai réussi à copié-coller les cases à cocher pour chacun des salariés, mais j'ai dû les paramétrer une par une...
Ce n'est pas bien grave, juste un peu de temps passé. Globalement, j'avance et je te remercie pour ça...
j'ai dû m'y reprendre à deux fois avant de tout comprendre : une fois à l'heure de l'apéro
, et une autre à l'heure de la digestion
. Mais avec un peu de concentration, on y arrive. Comme tu le disais très bien dans ton post précédent, on ne trouve que ce qu'on cherche et je ne pensais pas utiliser de macro pour résoudre mon problème. Alors, comme un novice j'ai paramétré ma première case à cocher (forme, taille, couleur, propriété linkcell) pour le premier salarié et comme un novice j'ai copié cette cellule, et j'ai sélectionné ma plage de cellules et j'ai collé ! Bingo, ça marche ! C'est trois fois beurk !
Parce qu'en plus, je dois me cogner (comme tu le dis) le changement de propriété linkcell pour chacune. tu as raison, c'est pas joli, joli... ... mais j'ai fait avec ce que j'avais : les bases.
Maintenant, avec l'art et la manière, c'est tout de suite plus professionnel...
la programmation : c'est comme d'apprendre une nouvelle langue et quand on ne sait pas expliquer qu'on veut manger, on dit j'ai faim...
Maintenant le truc important que je retiendrais, c'est cette partie de programme, tout à fait bien écrite :
Merci maître...
Encore merci et
A très bientôt
, et une autre à l'heure de la digestion
. Mais avec un peu de concentration, on y arrive. Comme tu le disais très bien dans ton post précédent, on ne trouve que ce qu'on cherche et je ne pensais pas utiliser de macro pour résoudre mon problème. Alors, comme un novice j'ai paramétré ma première case à cocher (forme, taille, couleur, propriété linkcell) pour le premier salarié et comme un novice j'ai copié cette cellule, et j'ai sélectionné ma plage de cellules et j'ai collé ! Bingo, ça marche ! C'est trois fois beurk !Parce qu'en plus, je dois me cogner (comme tu le dis) le changement de propriété linkcell pour chacune. tu as raison, c'est pas joli, joli... ... mais j'ai fait avec ce que j'avais : les bases.
Maintenant, avec l'art et la manière, c'est tout de suite plus professionnel...
la programmation : c'est comme d'apprendre une nouvelle langue et quand on ne sait pas expliquer qu'on veut manger, on dit j'ai faim...
Maintenant le truc important que je retiendrais, c'est cette partie de programme, tout à fait bien écrite :
.
# Dim o As OLEObject
# Set o = cellule.Worksheet.OLEObjects.Add(ClassType:="Forms.Checkbox.1", _
# Left:=cellule.Left, Top:=cellule.Top, _
# Width:=cellule.Width, Height:=cellule.Height)
# o.LinkedCell = cellule.Cells(1).Address
Merci maître...
Encore merci et
A très bientôt
Assez curieusement, le système de classes d'Excel ne connaît pas la cellule !
On dispose du classeur (Workbook), de la feuille de calcul (Worksheet), de la plage de cellules (Range), mais pas la cellule.
Si tu passes une seule cellule en paramètre à la fonction AjouteCoche(Range("E7")), pas de problème.
Mais tu peux être plus vicieux et passer toute une plage :
Dans ce cas, j'ai tout prévu
AjouteCoche(Range("E7:F8"))
(<-- crâneur. C'est à force de programmer, quelque soit le langage et l'usage qu'on voit ces choses là sans vraiment y penser), la coche s'installera sur toute l'étendue de la plage, mais seule la première cellule de cette plage (cellule.Cells(1).Address) sera pris en compte.____________________________
Citation :
quand on ne sait pas expliquer qu'on veut manger, on dit j'ai faim
J'aime beaucoup cette image.
Bonjour Zeb,
Cette citation me vient de ma jeunesse et plus précisément de mon professeur d'allemand. il notait mieux les élèves qui savait tenir une conversation, même avec du vocabulaire basic et beaucoup de paraphrases, plutôt qu'avec du vocabulaire utilisé à mauvaise escient, jusque pour faire constater qu'on avait bien appris sa leçon...
Cette citation me vient de ma jeunesse et plus précisément de mon professeur d'allemand. il notait mieux les élèves qui savait tenir une conversation, même avec du vocabulaire basic et beaucoup de paraphrases, plutôt qu'avec du vocabulaire utilisé à mauvaise escient, jusque pour faire constater qu'on avait bien appris sa leçon...
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumVba case a cocher
- ForumExcel 2007 case à cocher
- ForumVba excel case à cocher
- ForumMoteur de recherche case a cocher
- ForumFaire un upgrade dans une table avec une case a cocher
- ForumWord insertion dune case a cocher
- ForumMacro selection ligne selon case a cocher
- ForumMise a jour case a cocher asp
- ForumSuppression dune case a cocher sur excel 07
- ForumGenerer une liste deroulante a partir dune case a cocher
- Voir plus