Boucle avec Checkbox

Boucle avec Checkbox - VB/VBA/VBS - Programmation

Marsh Posté le 24-11-2008 à 15:19:23    

Bonjour,  
 
Après bien des recherches sur le net, je me permet d'écrire afin d'obtenir, enfin si possible, quelques infos.  
 
Description du projet:
 
Sur une feuille d'un fichier excel, une multitude de Checkbox sont integrées sur chaque cellule (ex: Checkbox1 en A1, Checkbox2 en A2, etc...).
A chaque Checkbox correspond un nom de fournisseur (ex: Maurice en B1, Marcel en B2, etc...).
 
d'autres part deux boutons sont également integrés dans la feuille, le premier pour filtrer, et le second pour réinitialiser  
 
Le principe du fichier est de pouvoir cacher les lignes sur lesquelles les Checkbox sont cochées. Lorsque l'on clique sur le bouton "Filtrer", les lignes cochées se cachent. Le second "Réinitialiser" permet de tout faire réapparaitre.
Le second servant à réinitialiser le tout. Le problème est que je n'arrive pas à créer de boucle qui fonctionne avec l'objet "CheckBox".
 
Voici le code:
 
Premier Bouton:
 
Private Sub CommandButton1_Click()
Dim a As Integer
For a = 0 To 100
Rows ("1:1" ).Offset (a,0).select
If CheckBox1 = True Then <-- Problème Boucle
Range ("A1" & a).entireRow.Hidden = True
End If
Next a
En Sub
 
 
Second Bouton:
Private Sub CommandButton2_Click()
Range ("1:100" ).EntireRow.Hidden = False
Checkbox1 = False <-- Problème Boucle
End Sub
 
Merci de ramener un mouton dans le bon chemin (j'en ai marre! Lol)
 
 
 
 
 
 

Reply

Marsh Posté le 24-11-2008 à 15:19:23   

Reply

Marsh Posté le 25-11-2008 à 07:42:28    

Je parie que ton code est dans un module et pas dans le module de ta feuille active. C'est pour ça que ça ne fonctionne pas ! Deux solutions :
- soit tu recopies tes procédures dans le module de la feuille où sont mis les checkbox
-soit dans le module tu remplaces checkbox1 par :

Code :
  1. ActiveSheet.CheckBox1


 
Chez moi ça marche !


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 25-11-2008 à 14:35:36    

Bonjour
 
Je pense qu'il veut surtout faire une boucle avec  
CheckBox1, CheckBox2, CheckBox3 etc.
 
Regarde du coté de la fonction Evaluate()
 
If Evaluate("CheckBox" & a) = True Then
 
Parcontre je ne sais pas comment tu vas masquer la checkbox en fonction de la ligne et remonter les autres...?
Tu peux lier tes checkbox a une cellule, avec la propriété 'LinkedCell'.
Imaginons une checkbox, checkbox1 situé sur B1, liée à B1 avec la propriété LinkedCell definie en B1
Si en B1 tu saisis 'False', la case se decoche, si en B1 tu saisis 'True' la case se coche...
Ca pourrait te servir
 
Cordialement


Message édité par SuppotDeSaTante le 25-11-2008 à 14:39:40

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-11-2008 à 17:09:00    

Bonsoir je vous remercie de votre aide,
 
dje69r a bien cerné mon problème c'est exactement ça que je voudrais faire!
Mais ça ne marche toujours pas.
 
Par contre les checkbox sont dimensionnées sur celles des cellules, par conséquent elles disparaissent lorsque les lignes sont masquées.
Est-il possible de joindre mon fichier excel sur le forum?
 
Merci à tous

Reply

Marsh Posté le 27-11-2008 à 20:06:56    

bonsoir,
 
je te laisse adapter ca a ton besoin
 
http://cjoint.com/?lBudvRfc83

Reply

Marsh Posté le 28-11-2008 à 16:33:52    

mmarle a écrit :

Bonsoir je vous remercie de votre aide,
 
dje69r a bien cerné mon problème c'est exactement ça que je voudrais faire!
Mais ça ne marche toujours pas.
 
Par contre les checkbox sont dimensionnées sur celles des cellules, par conséquent elles disparaissent lorsque les lignes sont masquées.
Est-il possible de joindre mon fichier excel sur le forum?
 
Merci à tous


Oui ou tu peux l'envoyer sur mon mail, si besoin je le mettrai sur un partage.
Parcontre explique pourquoi ca ne marche toujours pas, car j'ai fait l'essai et ca tourne sans souci.


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-11-2008 à 16:54:12    

Bonsoir dje69r
 
Tu peux Donwloader le fichier Excel sur le lien suivant:  
http://www.megaupload.com/?d=AU0WV9PC
 
Je ne sais toujours pas pourquoi ça marche, je pense essentiellement à un problème de programmation tout simplement, mais où?
 
Merci

Reply

Marsh Posté le 29-11-2008 à 01:36:08    

Euh normal que ca marche pas...  
Tu n'as pas tenu compte de ce que je t'ai dit la derniere fois...
Un probleme de programmation, oui certainement. Mais essaie tout de meme de regarder les solutions qu'on te donne ou de tenter de les exploiter... Là je l'ai refait en meme pas 5mn et ca roule...
 
Indice :

Citation :


Tu peux lier tes checkbox a une cellule, avec la propriété 'LinkedCell'.
Imaginons une checkbox, checkbox1 situé sur B1, liée à B1 avec la propriété LinkedCell definie en B1
Si en B1 tu saisis 'False', la case se decoche, si en B1 tu saisis 'True' la case se coche...


 
Apres si vraiment tu veux coder voila :

Citation :


Private Sub CommandButton1_Click()
z = Feuil1.OLEObjects.Count
For i = 1 To z
    NomCtrl = Feuil1.OLEObjects(i).Name
    If InStr(1, NomCtrl, "Check" ) <> 0 Then
        'Feuil1.OLEObjects(i).Object.Value = False
        Cells(i + 1, 2).EntireRow.Hidden = False
    End If
Next
End Sub
 
Private Sub CommandButton2_Click()
z = Feuil1.OLEObjects.Count
For i = 1 To z
NomCtrl = Feuil1.OLEObjects(i).Name
If Feuil1.OLEObjects(i).Visible = True Then
    If NomCtrl = "CheckBox" & i And Feuil1.OLEObjects(i).Object.Value = True Then
        Cells(i + 1, 2).EntireRow.Hidden = True
     
    End If
End If
Next
 
End Sub


 
Mais je pense qu'il te faudra quelques explications.
 
Cordialement


Message édité par SuppotDeSaTante le 29-11-2008 à 02:14:54

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-12-2008 à 08:27:26    

Génial! ça marche du Tonnerre,
 
Un grand merci dje69r, pour la patience que tu m'as accordé.
j'ai biensur essayé d'exploiter les ressources que tu as expliqué, malheureusement je n'ai pas les même connaissances que toi en terme de "OLEObject".
C'est pourquoi j'ai préféré posté le fichier Excel de base, pour éviter les âneries.
Après lecture de ta programmation, j'ai mieux compris le principe de la syntaxe et la manière dont il faut procéder (même si toutefois je n'y serais pas arriver à l'écrire).
 
Maintenant je sais attribuer à une variable, l'étendue du compte d'un objet.
 
Merci encore.
 
 

Reply

Marsh Posté le 01-12-2008 à 09:47:25    

Je te proposais la premiere solution, car elle est beaucoup plus simple. En effet, une fois ta case a cocher liée a une cellule, il suffit de definir la cellule sur vrai ou faux, pour que la case se coche ou se decoche... Et inversement si tu coches la case, la cellule prend Vrai et si tu decoches, la cellule prend Faux... Puis pour masquer ta ligne pas besoin d'atteindre la coche en elle meme, on listait toutes les lignes avec vrai, et on masquait ces memes lignes sans meme avoir besoin de se preoccuper des case a cocher ni de oleobject.
 
For x=1 to 1000
   if Cells(x+1,1)=true then  
      cells(x+1,1)entireRow.hidden = True
   else
      cells(x+1,12)entireRow.hidden = false
   endif
 
next x
 
C'est quand meme plus simple ;)
 
Ravi que ca tourne.
 
 :jap:


Message édité par SuppotDeSaTante le 01-12-2008 à 09:55:26

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed