Ecrire/effacer caption checkbox suivant etat true/false

Bonjour,

Cela fait, quelques jours que je patauge. j'ai consulté pas mal de discussions pour trouver une piste à exploiter pour résoudre mon problème.

J'ai mis sur une feuille (m_a), 45 checkboxs représentant l'état d'appareils ( en ou hors service), le caption = nom appareil.

J'ai mis ce code pour chaque checkbox

Private Sub Chk1_Click()
If Chk1.Value = True Then
MsgBox "ecrire " & Chk1.Caption & " dans cellule colonne G, pour JI ou ADF"
ElseIf Chk1.Value = False Then
MsgBox "effacer " & Chk1.Caption & " dans cellule colonne G,pour JI ou ADF"
End If
End Sub

Je voudrai remplacer les msgbox par des macros pour faire ce qui suit:

Sur la feuille BD , les appareils sont en colonne G et leur type correspondant est en colonne F (type) ,

le type est soit PS ou PS/JI ou CPS (c-à-d en colG il y a toujours le nom de l'appareil).

En gros, je voudrai en cliquant sur une checkbox, si checkbox.value=true écrire le checkbox.caption en colonne G si en colonne F il y a JI ou ADF. Et l'effacer si checkbox.value=false.

je vous donne un exemple concret:

si je clique sur TT16, celui-ci se trouve en feuille bd sur les lignes 44, 87 et 106,

donc si etat checkbox=true, ecrire TT16 en col G si en col F=JI ou ADF sur les lignes ayant pour critères:

Cells(44,3)&Cells(44,4)&int(Cells(44,5) et cells(x,6)= JI ou ADF

Cells(87,3)&Cells(87,4)&int(Cells(87,5) et cells(x,6)= JI ou ADF

Cells(106,3)&Cells(106,4)&int(Cells(106,5) et cells(x,6)= JI ou ADF

et si etat checkbox=false, effacer TT16 pour les mêmes critères.

En parcourant le forum, l'idée d'utiliser Find et FindNext m'a paru être la bonne solution, j'ai donc pris ce code pour le tester

Sub testBanzai64()
Dim myRange As Range, myCell As Range
 'code bon mais ne fait aucune différence entre PS, PS/JI et CPS
  aa = "ps" 'Or "ji"
  Set myRange = Columns(6).Find(aa, lookat:=xlPart)
  If Not myRange Is Nothing Then
    Set myCell = myRange
     Do
       myRange.Select
      Set myRange = Columns(6).FindNext(myRange)
    Loop Until myRange.Address = myCell.Address
  End If
End Sub

mais j'ai été déçu du résultat.

Je ne suis pas très à l'aise en vba, je m'en remets à vous pour m'aider à solutionner ce probléme.

En vous remerciant par avance.

Cordialement,

en vous remerciant par avance.

Bonjour

Je voudrais bien essayer de t’aider mais quelques points ne me semblent pas clairs.

Tu écris :

si je clique sur TT16, celui-ci se trouve en feuille bd sur les lignes 44, 87 et 106,

donc si etat checkbox=true, ecrire TT16 en col G…

Pourquoi écrire TT16 en colonne G sur les lignes 44, 87 et 106 alors que cela y figure déjà ?

Quant aux critères que tu donnes, ce n’est pas du VBA et donc incompréhensible pour moi :

Cells(44,3)&Cells(44,4)&int(Cells(44,5) et cells(x,6)= JI ou ADF

Cells(87,3)&Cells(87,4)&int(Cells(87,5) et cells(x,6)= JI ou ADF

Cells(106,3)&Cells(106,4)&int(Cells(106,5) et cells(x,6)= JI ou ADF

A te relire

Bonjour Gmb, le forum,

je suis vraiment confus, je réfléchissais à 2 problèmes différents et je me suis emmêlé les pédales.

Et j'ai oublié l'essentiel la feuille "APP".

Je vous explique de quoi il s'agit. Ce sont de postes électriques qui alimentent des abonnés, le point de raccordement

est désigné soit par PS ou ADF (col F), les coordonnées de ces points sont col C, col D et col E.

Tous les points de raccordements sont répertoriés sur la feuille "APP" et les postes sur la feuille "m_a" (case à cocher).

Si je coche un poste, je voudrai que son nom s'inscrive sur la ligne correspondante de la feuille "bd".

et si je décoche, l'effacer.

j'espère qu'ainsi c'est plus clair. Encore désolé pour ma confusion, je reconnais que ces jours-ci je suis brouillon .

En vous remerciant par avance.

Ci-joint fichier corrigé:

Bonjour

J'ai trouvé trop ennuyeux de répéter 45 fois un code presque (mais pas) identique pour tes 45 check box.

Alors je t'ai fait un variante.

Cela te convient-il ?

57case-a-cocher2.zip (90.47 Ko)

Bonjour,

Ton approche me plait beaucoup, mais ne donne pas le résultat escompté.

Je te donne un cas concret que je viens de tester.

J'ai sélectionné TT16, le report ne s'est effectué qu'une seule fois. Sur la feuille APP pour TT16 nous avons 3 combinaisons et elles doivent être toutes les 3 reportées.

ceci sur feuille APP, même chose sur feuille BD mais sur des lignes différentes

DC.........G1..........A/O........0,074.........PS......TT16.........* report que de cette ligne

DC.........L1...........A/O........0,07...........PS......TT16.........* non reporter

DC.........G2..........A/O........0,075........CPS....TT16.........* non reporter

Si ça reporte convenablement les données avec l'userfrom me convient bien.

Je vois que tu as utilisé la fonction find. Je ne suis pas fort en VBA, mais par comparaison avec le code de banzai64 mit dans mon premier post, il manque la FindNext. Comment l'adapter à ton code? Je vais essayer mais je t'avoue que j'ai très rarement réussi.

En te remerciant beaucoup.

Cordialement,

Re

Nouvelle version à tester.

105case-a-cocher3.zip (90.32 Ko)

je m'empresse pour te dire Bravo, c'est exactement ce que je voulais.

Je te remercie beaucoup.

Cordialement,

Cat

Rechercher des sujets similaires à "ecrire effacer caption checkbox suivant etat true false"