Macro sur CheckBox

Bonjour,

voilà j'ai un petit soucis avec des checkbox:

Dans un dialogue j'ai mis 2 checkbox afin d'imprimer deux pages distincts
d'un document calc bien définies pas la commande "Zone d'impression".

A chaque chekbox est ajoutée un macro comme cela :

valeurCheckBox1 = Dlg.getControl("CheckBox1")
valeurCheckBox2 = Dlg.getControl("CheckBox2")
    
If (valeurCheckBox1.State = 1) Then
            Print1
    
If (valeurCheckBox2.State = 1) Then
           Print2
End If

Mais si je coche les 2 checkbox je n'ai que la première feuille qui
s'imprime.

Le soucis doit venir de l'appel de procédure mais je ne vois pas comment
résoudre le problème.

Je vous ai mis un fichier exemple mais mon document original comporte prés
de 10 checkbox.

Merci de votre aide

http://nabble.documentfoundation.org/file/n3306781/Macro_Chekbox.ods
Macro_Chekbox.ods

Bonjour,

Le 2nd appel par If ne peut pas marcher. puisque le premier n'est pas terminé.

Essaie (sans garantie)
If (valeurCheckBox1.State = 1)
If (valeurCheckBox2.State = 1)
Then Print1
Then Print2
End if

Cordialement,
Sandy-Pascal Andriant

Bonjour,

J'obtiens :
Erreur de syntaxe BASIC
Attendu : Then

Juste à la fin de la première ligne

If (valeurCheckBox1.State = 1)
If (valeurCheckBox2.State = 1)
Then Print1
Then Print2
End if

Merci quand même de t'être penchée sur mon problème

Essaie de rajouter :

If (valeurCheckBox1.State = 1)
and If (valeurCheckBox2.State = 1)
Then Print1
Then Print2
End if

Cordialement,
Sandy-Pascal Andriant
Coordinateur de UPT-Paléographie

Désolé mais toujours pareil pour le "Then"

Comme dit précédemment il manque la fermeture du 2nd if :

valeurCheckBox1 = Dlg.getControl("CheckBox1")
valeurCheckBox2 = Dlg.getControl("CheckBox2")

If (valeurCheckBox1.State = 1) Then Print1
  If (valeurCheckBox2.State = 1) Then Print2
  End If
End if

Cordialement,
Sandy-Pascal Andriant

Je suggère:
If (valeurCheckBox1.State = 1)
Then Print1
End if
If (valeurCheckBox2.State = 1)
Then Print2
End if
jmb

Bonsoir,

Toujours des soucis, je vous mets les copies écrans des messages d'erreur

Pour le code de conil26

http://nabble.documentfoundation.org/file/n3307137/Test_conil26.jpg

Pour le code de barbault.

http://nabble.documentfoundation.org/file/n3307137/Test_barbault.jpg

Merci à vous

Alors, écris :

If (valeurCheckBox1.State = 1) Then Print1
End if
If (valeurCheckBox2.State = 1) Then Print2
End if

Avec Then sur la même ligne que if

Cordialement,
Sandy-Pascal Andriant

Bonsoir,

Sauf erreur de ma part, si tout est sur la même ligne, pas de End if. Il est considéré comme existant.
2 choix :

If (valeurCheckBox1.State = 1) Then Print1
If (valeurCheckBox2.State = 1) Then Print2

ou

If (valeurCheckBox1.State = 1) Then
     Print1
End if
If (valeurCheckBox2.State = 1) Then
     Print2
End if

Bon surf,
Christian

Bonsoir à tous,

je vais faire des tests et je vous tiens au courant

Merci encore bonne nuit à tous

Pendant que tu fais dormir tes yeux...
une version condensée :

If Dlg.getControl("CheckBox1").getState = True Then Print1
If Dlg.getControl("CheckBox2").getState = True Then Print2

En principe, ça doit marcher

Bon surf,
Christian

Ne pourrait-on pas se passer de la partie = True ?
Puisque faire un If sur une expression revient précisément à entrer dans la branche Then si elle est vraie (et dans la branche Else si elle est fausse).

En principe oui, sauf si le test est inverse, ce qui donne :
If Dlg.getControl("CheckBox1").getState Then Print1
mais dans l'autre cas :
If Dlg.getControl("CheckBox1").getState = False Then Print1

Bon surf,
Christian

Bonjour

Dans la même logique, on peut se passer du false avec :
If NOT Dlg.getControl("CheckBox1").getState Then Print1Churay

Toutafé :wink:

Bon surf,
Christian

Bonjour à tous,

Je tiens tout d'abord à vous remercier chaleureusement pour vous être
creusés les méninges sur mon problème.

Celui-ci, grâce à vous est maintenant résolut.

Une petit info cependant :
"getState = True" ne marche pas

"getState = 1" marche

Bonne journée à tous