Conditions IF + checkbox

sadness78

XLDnaute Junior
Bonjour tout le monde,

J’ai un petit problème d’écriture sur les checkbox que je n’ai jamais utilisé.

Voici mon exemple j’ai 6 checkbox qui me permette de lancer différent publipostage

Regarde la pièce jointe 1212.bmp

Concernant la macro de publipostage, je l’utilise déjà depuis longtemps la voici :

Code:
Sub Nom de la macro()

'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
    
    NomBase = "chemin du fichier"
    
    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    
    Set docWord = appWord.Documents.Open("chemin du fichier")
    
    With docWord.mailMerge
    
    .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM [AFAPS_BDD$]"
        
    .Execute Pause:=False
    
    End With
    
    Application.ScreenUpdating = True
    End Sub
J’aimerais qu’une vérification se fasse au niveau des checkbox :

- Si checkbox 1+2+3 n’est pas coché lancé la macro publipostage (Fichier 1)
- Si checkbox 1 est coché lancé la macro publipostage (Fichier 2)
- Si checkbox 1+2 est coché lancé la macro publipostage (Fichier 3)
- Si checkbox 1+4 est coché lancé la macro publipostage (Fichier 2+4)
 2 publipostages différents
- Si checkbox 1+4+5+6 est coché lancé la macro publipostage (Fichier 2+4+5+6)
 4 publipostages différents

J’ai réfléchis à la façon de procéder et je pense que le mieux serait de faire la vérification dans un premier temps ce qui permettrait de déterminer qu’elle macro de publipostage doit être lancé.

N’hésitez pas à me dire si ma réflexion est erronée.

Voici ce que j’ai pu trouver concernant les checkbox mais vu les nombreux cas je ne vois pas comment les structurer.
Code:
1.	Private Sub CheckBox1_Change() 
2.	    If CheckBox1.Value = True Then 
3.	        Range("E1").Value = "1" 
4.	    Else 
5.	        Range("E1").Value = "" 
6.	    End If 
7.	End Sub

Un peu plus de précision concernant mon exemple, les checkbox 1, 2 et 3 lance un fichier de publipostage différent même si les 3 sont cochées, alors que les checkbox 4, 5 et 6 lance 1 fichier de publipostage chacune.

Exemple : Si toute les checkbox sont cochées (1+2+3+4+5+6). Elles ne lanceront que 4 publipostages différents.
1+2+3 = 1
4 = 1
5 = 1
6 = 1

Merci d’avance de m’éclairer de vos lumières.

Cordialement,
 
Dernière édition:

sadness78

XLDnaute Junior
Re : Conditions entre checkbox pour lancer différentes macros

Après plusieurs essais voici ma démarche :

Code:
Sub Edition()

If
Checkbox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
then
Call macro1
Else Next if

End If

If 
Checkbox1.Value = True 
CheckBox2.Value = False
CheckBox3.Value = False
then
Call macro2
Else Next if

End If

Ainsi de suite avec toute les conditions. Est-ce la bonne démarche ?
 

sadness78

XLDnaute Junior
Re : Conditions entre checkbox pour lancer différentes macros

Bonjour le forum,

Je reviens vers vous avec toujours mon problème de condition et de checkbox

Je joins un fichier avec quelques corrections mais je suis toujours bloqué.

Si quelqu'un avait une piste.
 

Pièces jointes

  • test.zip
    61.8 KB · Affichages: 41
  • test.zip
    61.8 KB · Affichages: 36
  • test.zip
    61.8 KB · Affichages: 43

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Bonjour le forum,

Grâce à phlaurent55, je pense que j'ai avancé dans la résolution de mon problème, j'aurais de nouveau une question sur la mise en forme. Puis-je écrire ceci :

Code:
Sub verifck()

For i = 1 To 7
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = False And Menu_edition.Controls("checkbox3").Value = False And Menu_edition.Controls("checkbox4").Value = False Then
Call Module1.macro1
End If
Next i
UserForm1.Hide
End Sub
 

Pièces jointes

  • 3535.xls
    555 KB · Affichages: 81

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Conditions IF + checkbox

Bonjour Sadness

Pourquoi me citer alors que je suis étranger par rapport à ton code ???????????

Code:
Sub verifck()

For i = 1 To 7
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = False And Menu_edition.Controls("checkbox3").Value = False And Menu_edition.Controls("checkbox4").Value = False Then
Call Module1.macro1
End If
Next i
UserForm1.Hide
End Sub
If Menu_edition.Controls("checkbox1").Value
devrait être remplacé par:
If Menu_edition.Controls("checkbox" & i).Value

Pourquoi boucler 7 fois sur le même test :confused::confused::confused::confused::confused::confused::confused:

à+
Philippe
 

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Bonjour phlaurent55,

Une partie du code vient de vous grâce à l'autre fil de discussion. Je tenais juste à vous remercier, désolé si je suis allé trop loin.

Je ne comprend pas pourquoi mettre le "& i" dans le code
Code:
If Menu_edition.Controls("checkbox" & i).Value

Mon but étant de vérifier 1 seul fois la vérification des 4 premières checkbox pour lancer mes publipostages

Mon code ressemble plutôt à ceci :

Code:
Sub verifck()

For i = 1 To 7
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = False And Menu_edition.Controls("checkbox3").Value = False And Menu_edition.Controls("checkbox4").Value = False Then
Call Module1.macro1
End If
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = True And Menu_edition.Controls("checkbox3").Value = False And Menu_edition.Controls("checkbox4").Value = False Then
Call Module2.macro2
End If
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = False And Menu_edition.Controls("checkbox3").Value = True And Menu_edition.Controls("checkbox4").Value = False Then
Call Module3.macro3
End If
If Menu_edition.Controls("checkbox1").Value = True And Menu_edition.Controls("checkbox2").Value = True And Menu_edition.Controls("checkbox3").Value = False And Menu_edition.Controls("checkbox4").Value = True Then
Call Module4.macro4
End If
Next i
UserForm1.Hide
End Sub

Et ainsi de suite pour vérifier chaque vérification.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Conditions IF + checkbox

Re,
Je ne comprend pas pourquoi mettre le "& i" dans le code
concernant l'autre fil traitant un problème +/- semblable,
c'est parce qu'à l'intérieur de la boucle For ...... Next, on passe en revue tous les CheckBox ( de 1 à 7 ) et on teste leur valeur

Désolé, mais je n'ai plus de temps à y consacrer aujourd'hui, je fais une expo cet aprè-midi
clique ci-dessous sur le lien Facebook et tu comprendras

à+
Philippe
 

laetitia90

XLDnaute Barbatruc
Re : Conditions IF + checkbox

bonjour sadness78 ,phlaurent55:)
en l'absence de philippe :)
en prenant en cours le code il faut le mettre le code dans le CommandButton1 a mon avis plus simple??


Code:
Private Sub CommandButton1_Click()
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 = 0 And CheckBox4 = 0 Then Call Module1.macro1
 If CheckBox1 And CheckBox2 And CheckBox3 = 0 And CheckBox4 = 0 Then call Module2.macro2
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 And CheckBox4 = 0 Then Call Module3.macro3
 If CheckBox1 And CheckBox2 And CheckBox3 = 0 And CheckBox4 Then Call Module4.macro4
 'ect..
 Unload Me
End Sub

ps oublie un call eventuellement mettre les macros dans userform plus simple
 
Dernière édition:

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Bonjour laetitia90,

J'ai testé le code que tu m'as proposé, il ne plante pas c'est la 1er bonne nouvelle pour moi, après la mauvaise nouvelle c'est qu'il ne lance pas la macro de publipostage.

Mais c'est surement de ma faute car j'ai voulu remplacer le chemin du document par une cellule qui contient ce chemin là pour entre guillemet crée un chemin dynamique.

Mon ancien code qui marche :

Code:
 NomBase = "chemin du fichier (C:\)"

Le nouveau code qui peux être n'est pas bon :

Code:
 NomBase = "A1.value"


EDIT : la macro de publipostage dans son ensemble

Code:
Sub macro1()

'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
    
    NomBase = "A1.value"
    
    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("Z:\chemin en entier")
    
    'fonctionnalité de publipostage pour le document spécifié
    With docWord.mailMerge
    
    'Ouvre la base de données
        .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM [AFAPS_BDD$]"
        
    'Prend en compte l'ensemble des enregistrements
        With .DataSource
           .firstRecord = wdDefaultFirstRecord
           .lastRecord = wdDefaultLastRecord
            End With
    'Exécute l'opération de publipostage
        .Execute Pause:=False
    
    End With
    
    Application.ScreenUpdating = True
    End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Conditions IF + checkbox

re,tous :):):)

perso j'ai essaye avec les 2 methodes ouvre bien word
NomBase = "chemin du fichier (C:\)"
'NomBase = "A1.value"

apres je peus pas tester
Set docWord = appWord.Documents.Open("Z:\Aviation\AFAPS\AFAPS_Police.doc")

Code:
Sub macro1()
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
   NomBase = "chemin du fichier (C:\)"
    'NomBase = "A1.value"
    Set appWord = New Word.Application
    appWord.Visible = True
End Sub

deja word s'ouvre.... essai seulement avec ce code
 

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Bonjour Laetitia, le forum

Suite à quelques test ce week-end et vu ton test je pense pouvoir assurer que cela ne vient pas de la macro de publipostage.

Peux-tu uploader ton fichier de test avec la macro car pour ma part je ne suis pas sur qu'elle lance quelque chose.

J'ai essayé plusieurs codes les voicis :

Code:
Private Sub Publipostage_Click()
If Menu_edition_AFAPS.Controls("checkbox1").Value = 1 Then Call AFAPS_Police.AFAPS_Police
If Menu_edition_AFAPS.Controls("checkbox2").Value = 1 Then Call AFAPS_Lettre_accompagnement.AFAPS_Lettre_accompagnement
If Menu_edition_AFAPS.Controls("checkbox3").Value = 1 Then Call AFAPS_Attestation.AFAPS_Attestation
If Menu_edition_AFAPS.Controls("checkbox4").Value = 1 Then Call AFAPS_Quittance.AFAPS_Quittance
Call edition_pieces_AFAPS.edition_pieces_AFAPS
End Sub

Code:
Private Sub CommandButton1_Click()
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 = 0 And CheckBox4 = 0 Then Call Module1.macro1
 If CheckBox1 And CheckBox2 And CheckBox3 = 0 And CheckBox4 = 0 Then call Module2.macro2
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 And CheckBox4 = 0 Then Call Module3.macro3
 If CheckBox1 And CheckBox2 And CheckBox3 = 0 And CheckBox4 Then Call Module4.macro4
 'ect..
 Unload Me
End Sub

Le premier sur mon fichier de travail et le deuxième sur mon fichier de test.
Sur le premier code il me dit membre de méthode ou de données introuvable
Sur le deuxième code il y a une erreur au niveau du "Unload Me"

Ah et j'ai aussi éssayé cette forme là :

Code:
If Menu_edition_AFAPS.Controls("checkbox1" &i).Value = 1 Then Call AFAPS_Police.AFAPS_Police

Il faut avouer que je sèche sur ce problème.

Merci d'avance
 
Dernière édition:

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Re,

Je l'ai mis sur cette plate forme car même en le zippant il est trop volumineux.

Free - Envoyez vos documents

Voici un nouveau fichier celui-ci ressemble beaucoup plus dans son ensemble à l'original, les conditions If ne marchent pas mais sur un fichier de test oui, si quelqu'un a une explication je suis preneur.


Voici le code pour ceux qui ne pourrait pas télécharger le fichier :

Code:
Private Sub CommandButton1_Click()
 
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 = 0 And CheckBox4 = 0 Then Call M_EASLS_Police.EASLS_Police
 If CheckBox1 And CheckBox2 And CheckBox3 = 0 And CheckBox4 = 0 Then Call M_EASLS_Police_LC.EASLS_Police_LC
 If CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 = 0 Then Call M_EASLS_Police_RG.EASLS_Police_RG
 If CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then Call M_EASLS_Police_RG_RR.EASLS_Police_RG_RR
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 And CheckBox4 = 0 Then Call M_EASLS_Police_RG_RR_LC.EASLS_Police_RG_RR_LC
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 = 0 And CheckBox4 Then Call M_EASLS_Police_RR.EASLS_Police_RR
 If CheckBox1 And CheckBox2 = 0 And CheckBox3 And CheckBox4 Then Call M_EASLS_Police_RR_LC.EASLS_Police_RR_LC
 If CheckBox5 Then Call M_EASLS_Attestation.EASLS_Attestation
 If CheckBox6 Then Call M_EASLS_N°Facture.EASLS_N°Facture
 If chekcbox7 Then Call M_EASLS_Attestation.EASLS_Attestation
 
 End If
End Sub


Merci d'avance
 

Dormeur74

XLDnaute Occasionnel
Re : Conditions IF + checkbox

Première contribution, je demande l'indulgence de tous si je me plante.

J'utiliserais le système binaire qui permet d'éviter les "AND" et me paraît plus solide.
Un truc tout simple comme :
If CheckBox1 = True Then CBSum = CBSum + 1
If CheckBox2 = True Then CBSum = CBSum + 2
If CheckBox3 = True Then CBSum = CBSum + 4
If CheckBox4 = True Then CBSum = CBSum + 8
If CheckBox5 = True Then CBSum = CBSum + 16
If CheckBox6 = True Then CBSum = CBSum + 32

' Selon les cases cochées, on a toutes les solutions possibles de 1 à 63

Ensuite, un Select Case permet de savoir ce qui a été coché et de lancer la bonne macro.
 

sadness78

XLDnaute Junior
Re : Conditions IF + checkbox

Bonjour Dormeur74, le forum

Toute nouvelle proposition est la bienvenue. Par contre suite à ta proposition j'ai plusieurs questions.

Si tu peux regarder l'image dans le 2ème ou 3ème post, Mes 4 premières checkbox se vérifient entre elles pour lancer différentes macro mais par contre de la checkbox 5 à 7 si la valeur est vérifié (True) cela lance une macro pour chaque checkbox.

Suite à ça je me suis exercé au select case qui ne m'était pas très familier.

Voici l'ébauche :

Code:
Private Sub CommandButton1_Click()
 
 
If CheckBox1 = True Then CBSum = CBSum + 1
If CheckBox2 = True Then CBSum = CBSum + 2
If CheckBox3 = True Then CBSum = CBSum + 4
If CheckBox4 = True Then CBSum = CBSum + 8
If CheckBox5 = True Then CBSum = CBSum + 16
If CheckBox6 = True Then CBSum = CBSum + 32
 
 
Dim number As Integer

Select Case number
    Case 1
        Call EASLS_Police
        
    Case 2 To 3
        Call EASLS_Police_LC
    Case 4 To 7
        Call EASLS_Police_RG
    Case 8 To 15
    
    Case Else
        MsgBox "Vous devez cochez au moins 1 case"
End Select
End If

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 261
Messages
2 117 857
Membres
113 354
dernier inscrit
caillet