[VBA / access] Effacer valeur zone de txt en fct valeur zone de liste

Effacer valeur zone de txt en fct valeur zone de liste [VBA / access] - VB/VBA/VBS - Programmation

Marsh Posté le 24-05-2007 à 08:16:39    

Bonjour,
 
Je vous explique mon petit soucis :
 
J'ai une liste déroulante et je voudrai que en fonction d'une certaine valeur de cette liste, ça efface des valeurs se trouvant dans des zones de texte et dans une liste déroulante de mon formulaire.
 
Merci de votre aide.
Cordialement Bubut

Reply

Marsh Posté le 24-05-2007 à 08:16:39   

Reply

Marsh Posté le 24-05-2007 à 09:25:39    

Personnellement je ne vois pas quel est ton problème.
Tu veux vider des zones d'un formulaire lors d'un événement survenu sur ta liste et en fonction de la valeur de la-dite liste... ben y qu'à, non ?
 
Détaille ce qui te bloque stp.

Reply

Marsh Posté le 24-05-2007 à 10:17:21    

En faite j'ai un formulaire ou se trouve plusieurs listes déroulantes(1, 2, 3, 4) toutes en fonctions les unes des autres. J'ai aussi un sous formulaire en mode Feruille de données. Dans ce sous formulaire une liste déroulante (5) et 4 zones de textes en fonctions de cette liste déroulante (5).
La liste déroulante (5) du sous formulaire est en fonction d'une liste déroulante (1) du formulaire.
 
J'espère que jusqu'à là tu me suis.
 
Par exemple :
Lorsque je choisie la valeur "430-1" de la liste déroulante (1) mon sous formulaire devient visible, je remplie le reste du formulaire et du sous formulaire, c'est OK.
Mais si je fais tout ça et que en faite je me dis que je ne voulais pas de cette valeur de la liste déroulante (1), je change la valeur de liste déroulante (1), alors le sous formulaire redevient invisible (mais toujours avec les valeurs remplis précédement).
 
Donc ce que je souhaiterai :
Sur changement de la liste déroulante (1), lorsque l'on passe du sous formulaire visible à invisble, effacer les valeurs remplis précédemment.
 
Et donc je n'arrive pas à progammer l'effacement des valeurs du sous formulaire.
 
Si tu n'a pas tout compris j'essayerai de faire mieux

Reply

Marsh Posté le 24-05-2007 à 11:23:36    

Il ne suffit pas de mettre "" dans tes zones de texte ?  
Du genre : ZoneTexte.Text = ""
 
Pour la liste déroulante il n'y pas une méthode .Clear, soit directement sur la liste, soit sur un objet listitems ?

Reply

Marsh Posté le 24-05-2007 à 11:37:00    

Voila ce que j'ai fais pour la liste déroulante (1) sur changement :

Code :
  1. Private Sub Sous_Ensemble_Change()
  2.     If Sous_Ensemble.Text = "430-1" Then
  3.         Me.R_SF_Module.Visible = True
  4.     Else
  5.         Me.R_SF_Module.Visible = False
  6.         Select Case Sous_Ensemble
  7.                 Case "430-1"
  8.                 Me.R_SF_Module.Form.Non_Module.Value = ""
  9.                 Me.R_SF_Module.Form.Descriptif_Module.Value = ""
  10.                 Me.R_SF_Module.Form.Commentaire_Module.Value = ""
  11.                 Me.R_SF_Module.Form.Prix_Unitaire_Module.Value = ""
  12.             Case Else
  13.         End Select
  14.     End If
  15. End Sub

Il ne me trouve pas d'erreur mais il ne me fait pas ce que j'attendai.
 
On m'avai conseillé de le faire sur AfterUpdate (Après Mise A Jour) :

Code :
  1. Private Sub Sous_Ensemble_AfterUpdate()
  2.     If Me.R_SF_Module.Visible = False Then
  3.         Select Case Sous_Ensemble
  4.                 Case "430-1"
  5.                 Me.R_SF_Module.Form.Non_Module.Value = ""
  6.                 Me.R_SF_Module.Form.Descriptif_Module.Value = ""
  7.                 Me.R_SF_Module.Form.Commentaire_Module.Value = ""
  8.                 Me.R_SF_Module.Form.Prix_Unitaire_Module.Value = ""
  9.             Case Else
  10.         End Select
  11.     End If
  12. End Sub
  13. Private Sub Sous_Ensemble_Change()
  14.     If Sous_Ensemble.Text = "430-1" Then
  15.         Me.R_SF_Module.Visible = True
  16.       Else
  17.           Me.R_SF_Module.Visible = False
  18.     End If
  19. End Sub

Mais il me trouve une faute à la ligne 5.
 
Donc voilà.
 
Si tu as une petite idée.
 
Merci
 
Cordialement,
Bubut

Reply

Marsh Posté le 24-05-2007 à 12:03:09    

Sur ton 1er code, le fait qu'il ne fasse rien, n'est pas anormal.
Tu passe dans le "Select" si
   Sous_Ensemble.Text <> "430-1"
et dans ce cas tu fais un Select avec comme possibilité : 430-1
 
En clair ....
Tu dis si c'est différent de 430-1 alors je fais un select sur 430-1 ....
 
Il me semble qu'il y ait un binz où alors j'ai loupé quelque chose ...

Reply

Marsh Posté le 24-05-2007 à 13:51:49    

Bonjour Paul Hood,
 
Et tu peux me proposer quelque chose?
 
Pour toi c'est à ce niveau là que ça ne va pas :

Code :
  1. Case "430-1"


 
Ce serait plus tot :

Code :
  1. Case Sous_Ensemble.Text <> "430-1"


 
Tu n'as pas un autre avis :)  :)  :)  
 
Merci

Reply

Marsh Posté le 24-05-2007 à 14:37:46    

Et puis je suis sur que le chemin que j'utilise pour aller aux zones de texte n'est pas bon; Mais je n'arrive pas à trouver le bon programme.
 
Ci quelquun peut m'aider
 
Merci

Reply

Marsh Posté le 24-05-2007 à 14:48:24    

ton "sous_ensemble" c'est une textbox ? un label ?

Reply

Marsh Posté le 24-05-2007 à 15:06:45    

Mon sous ensemble c'est une liste déroulante de mon formulaire

Reply

Marsh Posté le 24-05-2007 à 15:06:45   

Reply

Marsh Posté le 24-05-2007 à 15:38:05    

pkoi tu passes pas par un .value ?

Reply

Marsh Posté le 24-05-2007 à 15:46:28    

Je passe par un .Value

Code :
  1. Me.R_SF_Module.Form.Non_Module.Value = ""
  2. Me.R_SF_Module.Form.Descriptif_Module.Value = ""
  3. Me.R_SF_Module.Form.Commentaire_Module.Value = ""                Me.R_SF_Module.Form.Prix_Unitaire_Module.Value = ""

Mais déja je pense que le chemin pour aller à mon sous formulaire n'est pas bon.

Reply

Marsh Posté le 24-05-2007 à 15:51:49    

normalement ton bout de code tu l'as mis dans ta userform, donc le Me c'est ta user form, non ?  :sweat:

Reply

Marsh Posté le 24-05-2007 à 16:05:02    

Si tu veux rééinitialiser la liste de ta listbox tu peux utiliser
listbox.clear. Ca permet de supprimer tous les éléments de ta liste.
 
Pour ton "if" et "select case" le problème c'est pas le code en lui même c'est les tests que tu veux faire.
Sans parler de code :
Si ta valeur est égale à "430-1" tu veux faire quoi ?
Si ta valeur est différente de "430-1" tu veux faire quoi ?

Reply

Marsh Posté le 24-05-2007 à 16:07:34    

c'est vrai que ton select case dans ta boucle if est un peu useless...

Reply

Marsh Posté le 24-05-2007 à 16:24:47    

si la valeur est à "430-1" on laisse comme c'est.
si la valeur est différent à "430-1" je supprime la valeur des zones de texte

Reply

Marsh Posté le 24-05-2007 à 16:28:42    

Alors dans ton 1er code le select case .... ne sert à rien.
If Sous_Ensemble.Text = "430-1" Then        
  Me.R_SF_Module.Visible = True    
Else        
  Me.R_SF_Module.Visible = False                            
  Me.R_SF_Module.Form.Non_Module.Value = ""                
  Me.R_SF_Module.Form.Descriptif_Module.Value = ""                
  Me.R_SF_Module.Form.Commentaire_Module.Value = ""                
  Me.R_SF_Module.Form.Prix_Unitaire_Module.Value = ""            
end if

Reply

Marsh Posté le 24-05-2007 à 16:34:00    

Ben je teste je te dis ça de suite.
 
merci

Reply

Marsh Posté le 24-05-2007 à 16:50:43    

Ouai c'est cool c'est ça.
 
J'te remercie Paul Hood
 
A+
 
Cordialement, Bubut

Reply

Marsh Posté le 29-05-2007 à 08:00:45    

Bonjour,
 
Je pensai en avoir fini avec cette question là, mais en faite non.
 
Donc mon problème est que ce que je souhaite supprimé sont une zone de liste déroulante et des zones de textes se trouvant dans un sous formulaire en mode Feuille de donnée.
 
Et donc ce programme :

Code :
  1. Private Sub Sous_Ensemble_Change()
  2.     If Sous_Ensemble.Text = "430-1" Then
  3.         Me.F_Module.Visible = True
  4.         Me.SousTotal.Visible = True
  5.     Else
  6.         Me.F_Module.Visible = False
  7.         Me.SousTotal.Visible = Fale
  8.         Forms.F_Devis.F_Module.Form.Nom_Module.Value = ""
  9.         Forms.F_Devis.F_Module.Form.Descriptif_Module.Value = ""
  10.         Forms.F_Devis.F_Module.Form.Commentaire_Module.Value = ""
  11.         Forms.F_Devis.F_Module.Form.Prix_Unitaire_Module.Value = ""
  12.     End If
  13. End Sub

Il me permet que d'effacer sur la dernière ligne qui a été écrite alors que moi se serai tout le tableau du sous formulaire que je souhaiterai effacer (et non que la dernière ligne).
 
Merci de votre aide
 
Cordialement,  
Bubut

Reply

Marsh Posté le 29-05-2007 à 11:13:20    

un .clear pour effacer toutes les valeurs d'un listbox.
attention ligne 7, c'est false et non pas fale

Reply

Marsh Posté le 29-05-2007 à 11:37:52    

Salut jpcheck,
 
merci d'avoir répondu aussi vite. Donc pour le .clear ça ne fonctionne pas, j'avais déja essayé et je viens de réessyé mais nada.

Reply

Marsh Posté le 29-05-2007 à 12:03:18    

tu essaies avec quelle ligne stp ? voir au moins si on parle de la même chose ou non =)

Reply

Marsh Posté le 29-05-2007 à 13:51:13    

Code :
  1. Private Sub Sous_Ensemble_Change()
  2.     If Sous_Ensemble.Text = "430-1" Then
  3.         Me.F_Module.Visible = True
  4.         Me.SousTotal.Visible = True
  5.     Else
  6.         Me.F_Module.Visible = False
  7.         Me.SousTotal.Visible = False
  8.         Forms.F_Devis.F_Module.Form.Nom_Module.Value.Clear
  9.         Forms.F_Devis.F_Module.Form.Descriptif_Module.Value.Clear
  10.         Forms.F_Devis.F_Module.Form.Commentaire_Module.Value.Clear
  11.         Forms.F_Devis.F_Module.Form.Prix_Unitaire_Module.Value.Clear
  12.     End If
  13. End Sub

Bon ça se peut surement que ce soit faut car je suis plutot du genre mauvais en programmation mais j'essaye de m'améliorer.

Reply

Marsh Posté le 29-05-2007 à 14:08:20    


        Forms.F_Devis.F_Module.Form.Nom_Module.Clear suffira (vire le .value)
       

Reply

Marsh Posté le 29-05-2007 à 15:49:43    

Citation :

Cet objet ne gère pas cette propriété ou méthode (erreur 438)

Voila ce qu'il me met, il n'accepte pas le .clear

Reply

Marsh Posté le 29-05-2007 à 15:58:55    

ton Forms.trucmachinchose, me parait un peu trop à rallonge, tes listbox sont situées sur quel form stp ?  :sweat:

Reply

Marsh Posté le 29-05-2007 à 16:06:59    

C'est surtout que la méthode .Clear ne s'applique qu'à des listbox (et équivalent) et je doute que Nom_Module en soit une.
Dans mes premiers messages j'avais fais la distinction entre TextBox et ListBox et je me demande si ça n'est pas passé à la trappe dans l'esprit de notre hôte bubut89 :)


Message édité par tegu le 29-05-2007 à 16:07:54
Reply

Marsh Posté le 29-05-2007 à 16:15:32    

Bonjour tegu,
 
juste pour dire que Nom_Module est une zone de liste déroulante  :na:  et que les autres sont des zones de textes. Et donc avec la méthode .Clear il me trouve une erreur.

Reply

Marsh Posté le 29-05-2007 à 17:44:27    

Ok. Quand tu fais la saisie de la méthode .Clear, est-ce que l'intellisense se déclenche et propose bien cette méthode dans la liste contextuelle ?

 

Sinon les zones relatives à Descriptif, Commentaire et Prix_Unitaire sont des texbox ou des listes déroulantes aussi ?

 

edit: si tu as une collection, genre listitems, vérifie qu'elle ne contiendrait pas la méthode .Clear, comme je l'ai indiqué au début


Message édité par tegu le 29-05-2007 à 17:46:50
Reply

Marsh Posté le 30-05-2007 à 07:53:24    

Slt tegu,
 
Lorsque je fais la saisie de la méthode .Clear, je n'ai aucune proposition dans le menu contextuelle.  
 
Je vois où si j'ai une collection du genre listitems? et ça m'aiderai à quoi?

Reply

Marsh Posté le 30-05-2007 à 13:55:47    

Bonjour,
 
Pour réinitialiser tes valeurs :
listbox1.clear
combobox1.clear
textbox1.value = ""
 
Si tu saisie une valeur dans la combobox, sans faire de additem , tu peux réinitialiser avec combobox1.text=""


Message édité par Paul Hood le 30-05-2007 à 13:56:09
Reply

Marsh Posté le 30-05-2007 à 16:27:51    

J'ai pas tout compris

Code :
  1. Private Sub Sous_Ensemble_Change()
  2.     If Sous_Ensemble.Text = "430-1" Or Sous_Ensemble.Text = "450" Then
  3.             Me.F_Module.Visible = True
  4.             Me.SousTotal.Visible = True
  5.     Else
  6.         Me.F_Module.Visible = False
  7.         Me.SousTotal.Visible = False
  8.         Forms.F_devis.F_Module.Form.Nom_Module.Clear
  9.         Forms.F_devis.F_Module.Form.Descriptif_Module.Value = ""
  10.         Forms.F_devis.F_Module.Form.Commentaire_Module.Value = ""
  11.         Forms.F_devis.F_Module.Form.Prix_Unitaire_Module.Value = ""
  12.     End If
  13. End Sub

C'est pas ca ce que tu veux que je fasse ??
 
Désolé mais moi et la programmation... pourtant je fais ce que je peux.
 
Merci de m'aider

Reply

Marsh Posté le 30-05-2007 à 16:35:15    

Et ca ne marche pas ?


Message édité par Paul Hood le 30-05-2007 à 16:35:29
Reply

Marsh Posté le 31-05-2007 à 07:38:48    

non non ça ne fonctionne pas, il me trouve une erreur dès la ligne 8.

Reply

Marsh Posté le 31-05-2007 à 08:09:32    

Quel est le code que tu utilises pour mettre les valeurs dans ta liste Nom_Module ?

Reply

Marsh Posté le 31-05-2007 à 10:26:54    

Je suis passé par l'interface graphique, je n'ai pas utilisé de code.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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