EXCEL et les CHECKBOX

O

Olic95

Guest
Salut à tous,
Je bidouille dans VBA sous EXCEL 2003 et je bloque sur une CHECKBOX :

Dim CASEACOCHER As CheckBox
Dim NOMFILIALE As String

Private Sub OK_Click()
Windows('Fichier Impression Des Indicateurs par Activite.xls').Visible = True
Sheets('Filiales').Activate
Range('A1').Select
NOMFILIALE = ActiveCell.Value
CASEACOCHER.Name = ActiveCell.Offset(0, 4).Value
If CASEACOCHER.Value = True Then
Sheets('Recap').Activate
Range('B4').Select
ActiveCell.Value = NOMFILIALE
End If
End Sub

En rouge mon problème. Je veux que le nom de ma variable CASEACOCHER.Name prenne la valeur d'une cellule (on va dire TOTO) et ensuite tester si TOTO.Value est 'True' ou 'False'.

J'ai une erreur d'exécution 91 :
Variable objet ou variable de bloc With non définie

Je ne m'en sors pas... help please !
 

Hellboy

XLDnaute Accro
Bonjour Olic95

Si tu as utilisé la case a coché qui fait partit des boites de contrôles et non par la listes des contrôles des formulaires, tu peux récupérer l'information en utilisant une procédure évènementiel (l'action de clic sur le bouton) pour récupérer l'état du bouton (true ou false).

Dans le VBE( Visual Basic Editeur), tu vas dans le module de la feuille 'Filiales' et tu inscrit le code suivant: En supposant que la case a coché est la numéro un:


Private Sub CheckBox1_Click()
If CheckBox1.Value = False Then
   
Else

End If

End Sub

C'est une façon de faire.
 
O

Olic95

Guest
Je n'ai peut-être pas été clair, et il ne me semble pas que la réponse corresponde à ma question...

J'ai défini une UserForm avec un certain nombre de cases à cocher. Disons 5.

Dans la feuille Filiales, j'ai une liste (de Filiales) dans la colonne A :
TO TO
TI TI
TA TA
TU TU
TE TE

Dans la colonne E de cette même feuille, j'ai le nom des cases à cocher de ma UserForm.
TOTO
TITI
TATA
TUTU
TETE

En balayant la colonne E, je veux que CASEACOCHER.Name prenne successivement la valeur de chaque cellule de la colonne E.

CASEACOCHER.Name = ActiveCell.Offset(0, 4).Value me génère une erreur.
 

olic95

XLDnaute Junior
.Caption (qu'on me corrige si je me trompe) c'est le libellé qui s'affiche à côté de la case à cocher...

Je vais essayer mais je n'y crois pas :(

Edit :

Même punition avec .Caption, merci quand même pour la proposition

Message édité par: olic95, à: 06/09/2005 13:19
 

olic95

XLDnaute Junior
Hellboy qu'appelles tu 'liste des contrôles des formulaires' ?

Moi j'ai pris la 'CheckBox' qui se trouve dans la 'Boîte à outils' qui s'affiche automatiquement à la création de la UserForm

Si j'ai tout bien compris, il est dit dans l'aide VBA que la propiété Name est en lecture seule... je ne suis pas dans la m#$%@ tiens !

Message édité par: olic95, à: 06/09/2005 13:39
 

Hellboy

XLDnaute Accro
re: olic95, bonjour MichelXLD

Bon excuse moi du délais, j'étais occupé.

Premièrement, selon ton premier post, je ne savais pas que tu parlais d'un checkbox ds un userform. Donc oublie ma première intervention.

Deuxièment, la réponse a MichlXld aurait été aussi mon inspiration a ta demande.

Finalement, et malheureusement, à ma connaissance tu ne peux changer le NOM et non l'intitulé d'un controle Active X durant l'exécution d'un programme. Cepandant, une idée me viens en tête, si tu veux exécuter une seule fois cette procédure, tu pourrais te construire une macro qui crée l'object userform et ainsi créer tout tes checkbox avec le nom que tu veux leur donner
 

olic95

XLDnaute Junior
Ouais, ça ne me plaît pas trop comme solution.

En fait, chaque case à cocher correspond à une filiale (je pense que tu l'avais compris).

Si la case à cocher de la filiale TOTO est 'true', j'imprime un état. Sinon rien ne se passe.

D'où ma UserForm avec tout un tas de cases à cocher.

Ma feuille Filiales regroupant une liste des filiales, en résumé je voulais donc faire :

Lire première cellule dans feuille filiale
si checkbox portant le nom de la première cellule est true
imprimer formulaire'
fin si
Lire seconde cellule dans feuille filiale (et ainsi de suite, tout ça avec un FOR ou FOR EACH je ne sais pas trop.

Message édité par: olic95, à: 06/09/2005 14:41
 

olic95

XLDnaute Junior
Je vais essayer de faire simple.

Une UserForm avec une case à cocher dont le nom (.Name) est PARIS

Une cellule A1 d'une feuille qui contient PARIS

Comment tester la valeur (.Value) de la case à cocher PARIS en utilisant le contenu de la cellule A1 à la place du nom de la case à cocher :

If [Activecell.Value].Value = true then
......
End if

où [Activecell.Value] serait une variable de je ne sais pas quel type contenant la valeur de la cellule A1... c'est clair ou pas :eek:

PS : pas grave pour les temps de réponse, je suis au taff...
 

Hellboy

XLDnaute Accro
re

Ce n'est pas complèt, mais c'est un début:

' une autre façon d'accèder au controles:
If UserForm1.Controls('CheckBox1').Value = True Then
Stop
End If

' Mais ds ton cas, le nom du controle, si j'ai bien compris est le même qu'une valeur de cellule

If UserForm1.Controls('' & Cells(1, 1)).Value = True Then

End If

' Donc une boucle pour tout les traiter
For Each cell In Range(Cells(x, y), Cells(x, y))
   
If UserForm1.Controls('' & Cells(1, 1)).Value = True Then
   
   
End If

Next cell

a+
 

olic95

XLDnaute Junior
Salut Hellboy,

Et merci pour toutes ces explications :)

Je teste ça dans la journée (si j'en ai le temps) et je te tiens au courant.

A+

Edit :
Je n'aime pas laisser traîner les choses : CA FONCTIONNE !!!!!! J'ai juste remplacé le 'Cells(1,1)' par 'ActiveCell.Value'.Mille fois merci Hellboy.

Olivier.

Message édité par: olic95, à: 07/09/2005 11:09
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972