Page 1 sur 1
[Résolu][Calc] Cocher une case à cocher si cellule non vide.
Publié : 13 mai 2011 17:38
par jeff10241
Bonjour à tous,
Me perdant un peu dans la syntaxe j'implore votre aide.
Sur plusieurs lignes j'ai une case à cocher dans la colonne D (pour info liée à une cellule dans la colonne Q) ; je voudrais que si une valeur est entrée dans la colonne C la case correspondante s'active toute seule et ainsi de suite pour toutes les lignes (même après appui sur un bouton pour lancer le code, ça je sais faire). La cellule liée à la case me sert à tout autre chose...
Voici le code que j'ai pour l'instant (ici exemple pour la ligne 6, et ma feuille se nomme Saisie N-EEL) :
Code : Tout sélectionner
REM ***** BASIC *****
Option Explicit
sub Validcases
Dim oFeuil As Object
Dim oCell As Object
Dim cboxC6 As Object
Dim D As Object
Dim CAS2 As String
Dim Chaine As String
Dim V As String
oFeuil = ThisComponent.Sheets.getByName("Saisie N-EEL")
oCell = oFeuil.getCellRangeByName("C6")
Chaine = oCell.String '(chaine de caractères)
select case Chaine
case "" : V = 1
case Else : V = 0
D= Dlg.Model.cboxC6
D.TriState = False
D.State = V
Dlg.Execute
end select
End sub
J'ai vraiment tout mit car je ne suis pas doué en déclaration de variables... j'ai ici une erreur à la ligne D= Dlg.Model.cboxC6, me disant Variable d'objet non définie. J'ai pourtant défini D et cboxC6 qui est ma case à cocher.
En espérant avoir été clair, merci d'avance de votre aide.
Jeff
Re: Cocher une case à cocher si une cellule est non vide...
Publié : 13 mai 2011 17:47
par Don Corleone
Bonjour,
Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.
Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?
Lisez ce fil pour savoir quelle balise utiliser :
http://user.services.openoffice.org/fr/ ... html#27295
N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.
Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.
Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.
Merci de votre collaboration.
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 13 mai 2011 18:17
par Alain de La Chaume
Bonsoir
jeff10241
J'ai vraiment tout mit [...]
Nan !
Manque juste le fichier comportant ce qui est nécessaire à la compréhension de votre problème.
Par exemple, la ligne de code
laisse penser que cboxC6 est un contrôle de boîte de dialogue...
Vrai ? ... Ou pas ? En tout cas, on aimerait savoir d'où vient ce "Dlg".
Bien cordialement, Alain.
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 13 mai 2011 19:02
par jeff10241
Bonsoir,
voici donc le fichier...
cboxC6 est en fait le nom de la case à cocher qui devrait être activée par le remplissage de la cellule C6
(j'ai voulu faire un essai avec la première avant d'essayer de faire une boucle ! c'est une autre histoire).
Si vous avez des problèmes à l'affichage de quelques étiquettes c'est normal, il y a une police phonétique de prévue...
Merci aussi si vous pouvez m'expliquer le balisage de la section pour mieux coller au forum...
Jeff
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 13 mai 2011 19:04
par Don Corleone
jeff10241 a écrit :Merci aussi si vous pouvez m'expliquer le balisage de la section pour mieux coller au forum...
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 13 mai 2011 21:16
par Alain de La Chaume
Bonsoir,
Il s'agit donc bien de contrôles de formulaire.
Voici une petite procédure qui modifie l'état d'un contrôle 'Case à cocher'
du formulaire par défaut (index 0) de la feuille active.
Code : Tout sélectionner
'---------------------------------------------------------------------
' Cocher, ou pas, la case 'nomCoche'
' du formulaire par défaut (0) de la feuille active
'---------------------------------------------------------------------
sub coche(nomCoche as string, ouiNon as boolean)
dim oFeuille as object, oForm as object, oCoche as object
oFeuille = thisComponent.currentController.activeSheet
oForm = oFeuille.drawPage.forms(0)
if oForm.hasByName(nomCoche) then
oCoche = oForm.getByName(nomCoche)
if ouiNon then oCoche.state = 1 else oCoche.state = 0
end if
end sub
Exemples d'appel :
Il semble que seule cette partie de la question vous pose problème.
Je ne m'attarde donc pas sur la condition d'appel.
Bien cordialement, Alain.
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 14 mai 2011 12:10
par jeff10241
Merci beaucoup de votre réponse, mais je suis tellement peu doué que ça ne règle pas mon problème...
J'ai intégré "sub coche" et le code précédent dans un classeur simplifié joint centré sur le problème, ce qui donne le code suivant :
Code : Tout sélectionner
REM ***** BASIC *****
Option explicit
Sub coche(nomCoche as string, ouiNon as boolean)
dim oFeuille as object, oForm as object, oCoche as object
oFeuille = thisComponent.currentController.activeSheet
oForm = oFeuille.drawPage.forms(0)
if oForm.hasByName(nomCoche) then
' Erreur ici : "l'argument n'est pas facultatif"
oCoche = oForm.getByName(nomCoche)
if ouiNon then oCoche.state = 1 else oCoche.state = 0
end if
end sub
sub Validcases
dim document as object
dim dispatcher as object
Dim oFeuil As Object
Dim oCell As Object
Dim Chaine As String
Dim cboxC6 as object
Dim coche as object
Dim V As String
oFeuil = ThisComponent.Sheets.getByName("Feuille1")
oCell = oFeuil.getCellRangeByName("C6")
Chaine = oCell.String '(chaine de caractères)
select case Chaine
case "" : V = 1
case Else : V = 0
end select
'msgbox V Ici V change bien si la cellule C6 est vide ou pas
if V = 1 then coche("cboxC6", true)
if V = 0 then coche("cboxC6", false)
End sub
Quelle déclaration manque donc pour la la ligne d'erreur"argument non facultatif" ?
Et mes deux ligne "if / then" sont elles bien écrites ?
Ca avance mais ce n'est pas encore ça. Merci d'avance (et merci pour les balises, j'ai compris je saurai!)
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 14 mai 2011 15:00
par joel275
Bonjour,
je crois que tu confonds deux choses très différentes: une collection et un élément de cette collection qui peut être obtenu grâce à son numéro (index) ou grâce à son nom.
donne un formulaire de la collection, celui repéré par le numéro 0, sans doute le premier créé.
donne également un formulaire de la collection, celui nommé par le contenu de la variable "String" nomcoche; et on teste d'abord son existence (dans la collection) par
pour éviter des mauvaises surprises plus loin dans le code.
A plus
Joël
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 14 mai 2011 16:25
par Alain de La Chaume
Re...
Dans votre procédure
sub Validcases vous déclarez à tord :
Neutralisez cette ligne de code, et refaites un essai.
Bien cordialement, Alain
P.S. − En prime, un avis qui n'engage que moi sur votre fichier (première version) :
Que différents contrôles de formulaire portent le même nom ne va pas être facile à gérer.
Plus un petit hors-sujet : vu la configuration de votre feuille,
les feuilles de style n'auraient rien d'un gadget :
un peut de temps "perdu" qui pourrait en faire gagner beaucoup.
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 14 mai 2011 20:40
par jeff10241
Bonsoir,
même en supprimant cette ligne j'ai toujours la même erreur...
Je vais donc laisser tomber, préférant continuer avec ce que je sais faire. Merci quand même de votre aide et aussi pour l'idée des feuilles de style,
vu que j'aurai de nombreux fichiers à faire du même genre.
Re: [Calc]Cocher une case à cocher si une cellule est non vi
Publié : 14 mai 2011 20:51
par Alain de La Chaume
même en supprimant cette ligne j'ai toujours la même erreur...

Impossible !
Où alors, mais je n'ose pas le croire, au lieu d'exécuter
Validcases (qui fait appel à
coche)
vous exécutez
coche directement.
Et là, oui

...
Heu... désolé !
Résolu : [Calc]Cocher une case à cocher si cellule non vide.
Publié : 15 mai 2011 08:08
par jeff10241
Merci

et honte à moi

(F5 n'a pas que du bon...) !!
Je joins le classeur "finalisé" (j'avais inversé les 0 et 1 finaux par rapport à ce que j'attendais) , et je me penche sur la suite.