Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1672 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1564385
bubut89
Posté le 24-05-2007 à 08:16:39  profilanswer
 

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

mood
Publicité
Posté le 24-05-2007 à 08:16:39  profilanswer
 

n°1564401
tegu
Posté le 24-05-2007 à 09:25:39  profilanswer
 

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.

n°1564431
bubut89
Posté le 24-05-2007 à 10:17:21  profilanswer
 

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

n°1564474
tegu
Posté le 24-05-2007 à 11:23:36  profilanswer
 

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 ?

n°1564479
bubut89
Posté le 24-05-2007 à 11:37:00  profilanswer
 

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

n°1564501
Paul Hood
Posté le 24-05-2007 à 12:03:09  profilanswer
 

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 ...

n°1564572
bubut89
Posté le 24-05-2007 à 13:51:49  profilanswer
 

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

n°1564605
bubut89
Posté le 24-05-2007 à 14:37:46  profilanswer
 

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

n°1564612
jpcheck
Pioupiou
Posté le 24-05-2007 à 14:48:24  profilanswer
 

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

n°1564623
bubut89
Posté le 24-05-2007 à 15:06:45  profilanswer
 

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

mood
Publicité
Posté le 24-05-2007 à 15:06:45  profilanswer
 

n°1564649
jpcheck
Pioupiou
Posté le 24-05-2007 à 15:38:05  profilanswer
 

pkoi tu passes pas par un .value ?

n°1564656
bubut89
Posté le 24-05-2007 à 15:46:28  profilanswer
 

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.

n°1564659
jpcheck
Pioupiou
Posté le 24-05-2007 à 15:51:49  profilanswer
 

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

n°1564670
Paul Hood
Posté le 24-05-2007 à 16:05:02  profilanswer
 

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 ?

n°1564673
jpcheck
Pioupiou
Posté le 24-05-2007 à 16:07:34  profilanswer
 

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

n°1564683
bubut89
Posté le 24-05-2007 à 16:24:47  profilanswer
 

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

n°1564685
Paul Hood
Posté le 24-05-2007 à 16:28:42  profilanswer
 

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

n°1564690
bubut89
Posté le 24-05-2007 à 16:34:00  profilanswer
 

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

n°1564701
bubut89
Posté le 24-05-2007 à 16:50:43  profilanswer
 

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

n°1566508
bubut89
Posté le 29-05-2007 à 08:00:45  profilanswer
 

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

n°1566569
jpcheck
Pioupiou
Posté le 29-05-2007 à 11:13:20  profilanswer
 

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

n°1566585
bubut89
Posté le 29-05-2007 à 11:37:52  profilanswer
 

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.

n°1566605
jpcheck
Pioupiou
Posté le 29-05-2007 à 12:03:18  profilanswer
 

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

n°1566652
bubut89
Posté le 29-05-2007 à 13:51:13  profilanswer
 

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.

n°1566666
jpcheck
Pioupiou
Posté le 29-05-2007 à 14:08:20  profilanswer
 


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

n°1566724
bubut89
Posté le 29-05-2007 à 15:49:43  profilanswer
 

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

n°1566730
jpcheck
Pioupiou
Posté le 29-05-2007 à 15:58:55  profilanswer
 

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

n°1566740
tegu
Posté le 29-05-2007 à 16:06:59  profilanswer
 

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
n°1566746
bubut89
Posté le 29-05-2007 à 16:15:32  profilanswer
 

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.

n°1566814
tegu
Posté le 29-05-2007 à 17:44:27  profilanswer
 

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
n°1567004
bubut89
Posté le 30-05-2007 à 07:53:24  profilanswer
 

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?

n°1567229
Paul Hood
Posté le 30-05-2007 à 13:55:47  profilanswer
 

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
n°1567367
bubut89
Posté le 30-05-2007 à 16:27:51  profilanswer
 

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

n°1567373
Paul Hood
Posté le 30-05-2007 à 16:35:15  profilanswer
 

Et ca ne marche pas ?


Message édité par Paul Hood le 30-05-2007 à 16:35:29
n°1567612
bubut89
Posté le 31-05-2007 à 07:38:48  profilanswer
 

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

n°1567616
Paul Hood
Posté le 31-05-2007 à 08:09:32  profilanswer
 

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

n°1567689
bubut89
Posté le 31-05-2007 à 10:26:54  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Probleme avec un module VBAChercher une chaîne de caractères dans une liste
[Access]Access conviendrait il à cette BDD ?[Access 2000 et SQL] Count, Group by et Sort => le sort ne marche pas
Add-in Visual Studio 2005 liste webcontrols[ DirectX ] Connaître la valeur des commandes exécutées
VB2005 : Conversion d'une valeur string en valeur numérique Liste Chainée [DS niveau premiere année ingé]
Creation base de données Access ou Mysql - Interaction avec Wordin array) Comment limiter une liste de newsletter aux numéros publiés?
Plus de sujets relatifs à : [VBA / access] Effacer valeur zone de txt en fct valeur zone de liste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR