Problème pour vérifier Case à cocher avec VBA

Bonjour,

J'ai un petit soucis pour l'utilisation des checkbox avec vba!

J'aimerai que dans mes cases G il se mette oui ou non en fonction de la case qui est cochée dans un autre fichier. Le problème c'est que je pense que j'ai un problème de syntaxe, mais je ne sais pas où. Je vous ai mis des images pour illustrer mon propos!

Voici le code que j'utilise :

Private Sub CommandButton1_Click()

Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet source)
Dim ch As CheckBox

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Exutoire milieu naturel") 'à adapter à ton cas
Workbooks.Open Filename:=ThisWorkbook.Path & "\Fiche DO.xlsx"
Set CS = Workbooks("Fiche DO.xlsx") 'définit le classeur source CS
i = 1 'on part de la feuille 2 du fichier 'Fiche_DO'
j = Worksheets.Count 'nombre de feuille du fichier 'fiche_DO'
n = 2 'on part de la ligne 2
OD.Range("A2:H1000").ClearContents

While i <= j

    '###### Ecoulement par temps sec######
    'si la case 10 est cochée : on ecrit non, si la case 8 est coché on écrit oui, et si aucune des deux n'est cochées on écrit "-"
    If CS.Sheets(i).CheckBoxes("Case à cocher 8").Value = xlOn Then
        OD.Cells(n, "G") = "Oui"

    ElseIf CS.Sheets(i).CheckBoxes("Case à cocher 10").Value = xlOn Then
        OD.Cells(n, "G") = "Non"
    Else
        OD.Cells(n, "G") = "-"
    End If

'on recommence la boucle pour changer de feuille
    i = i + 1
    n = n + 1 'on va à la ligne suivante pour un nouveau DO

    Wend

CS.Close False
End Sub

Si vous avez une petite idée pour m'aider ça serait cool !

Merci d'avance!

fichier checkbox tableau destination

Bonsoir Prob1,

Dans cette partie du programme:

While i <= j

    '###### Ecoulement par temps sec######
    'si la case 10 est cochée : on ecrit non, si la case 8 est coché on écrit oui, et si aucune des deux n'est cochées on écrit "-"
    If CS.Sheets(i).CheckBoxes("Case à cocher 8").Value = xlOn Then
        OD.Cells(n, "G") = "Oui"

    ElseIf CS.Sheets(i).CheckBoxes("Case à cocher 10").Value = xlOn Then
        OD.Cells(n, "G") = "Non"
    Else
        OD.Cells(n, "G") = "-"
    End If

Le code sur la vérification des cases à cocher est correct. Par contre je suppose que la case 8 est prioritaire sur la case 10. Car si cette première case est cochée la cellule de destination sera "Oui". Et quelque soit la case à cocher 10 la valeur "Non" ne sera jamais sur la cellule de destination. Vu leur cellule de destination identique et que la condition est alternative..

Si la case 8 n'est pas prioritaire sur la case 10 il faut donc modifier cette partie du programme.

Bonjour, non il n'y a pas forcément de priorité, mais il n'y a toujours qu'une seule case qui est cochée parmi les 2. Donc l'ordre importe peu.

Mais le code a un problème, ici le code s'arrête

If CS.Sheets(i).CheckBoxes("Case à cocher 8").Value = xlOn Then

et me met l'erreur présente en image.

erreur checkbox

Bonjour Prob1, Xcellus, le forum,

If CS.Sheets(i).CheckBoxes("Case à cocher 8").Value = xlOn Then

cette syntaxe me semble bizarre.....

En utilisant une case à cocher "ActiveX" et non formulaire

Private Sub CheckBox1_Click()
 If CheckBox1.Value = True Then
' ton code
 End If
End Sub
39checkbox.xlsm (19.09 Ko)

Cordialement,

Bonjour,

En fait c'est très étrange , car le code fait son travail, mais l'erreur apparait quand même ! j'ai essayé avec le code de xorsankukai mais ça ne change rien ..

Je vous mets en pièces jointes les 2 fichiers si vous voulez y jeter un coup d'oeil

Merci en tout cas !

6fiche-do.xlsx (954.78 Ko)

Bonjour Prob1, Xorsankukai,

Rassurez vous cette syntaxe, je l'ai testé sans un contrôle Activex et j'ai bien eu accès au checkbox qui en fait est similaire à un shape.

Par contre mon chemin workbook et sheet était bien défini. Ensuite je préfère plus la construction Do while... Loop que celle avec wend. Mais ici un for... Next était suffisant.

Re,

@Xcellus:

Rassurez vous cette syntaxe, je l'ai testé sans un contrôle Activex et j'ai bien eu accès au checkbox qui en fait est similaire à un shape.

Autant pour moi, je n'utilise pas de checkbox sur les feuilles car trop contraignant,

Cordialement,

Mais cela ne résoud pas mon problème .. même si la syntaxe est correcte ..

A nouveau,

Je viens juste de télécharger tes fichiers.

Pour voir le déroulement du programme.

A suivre...

Suite et fin?

Dans ton fichier DO tu as 2 onglets mais avec des numéros de case à cocher différent par rapport à ces onglets.

J'ai corrigé en donnant aux cases à cocher le même chiffre dans les 2 feuilles. Donc cela forme le tableau de checkbox suivant :

D 1_______D 2

D 3_______D 4

D 5_______D 6

Et aussi modifié dans l'autre fichier la macro afin qu'elle appelle les bons numéros de checkbox. Ton souci venait qu'il n'existait pas de n° 8 et n° 10 dans la deuxième feuille.

13fiche-do.xlsx (949.22 Ko)

Bonjour,

Alors je ne sais pas si c'était ça le problème mais en tout cas maintenant ça fonctionne parfaitement !

Merci !

Rechercher des sujets similaires à "probleme verifier case cocher vba"