Excel 2007 vba test si valeur saisie textbox
Seb
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,
J'ai crée un userform avec 50 textbox. J'ai une combobox qui me permet de choisir un profil.
Un bouton enregistrer me permet de copier le contenu des textbox dans les cellules d'excel en fonction du profil choisi.
Si l'utilisateur oublie d'appuié sur le bouton enregistrer avant de changer de profil toutes les valeurs saisie sont perdue.
J'aimerai testé si l'utilisateur viens de saisie une valeur dans une ou plusieurs textbox et qu'au moment de changer de profil un message apparaît le prévenant qu'il n'a pas enregistrer.
Comment est ce possible de faire ceci.
Merci pour votre aide.
J'ai crée un userform avec 50 textbox. J'ai une combobox qui me permet de choisir un profil.
Un bouton enregistrer me permet de copier le contenu des textbox dans les cellules d'excel en fonction du profil choisi.
Si l'utilisateur oublie d'appuié sur le bouton enregistrer avant de changer de profil toutes les valeurs saisie sont perdue.
J'aimerai testé si l'utilisateur viens de saisie une valeur dans une ou plusieurs textbox et qu'au moment de changer de profil un message apparaît le prévenant qu'il n'a pas enregistrer.
Comment est ce possible de faire ceci.
Merci pour votre aide.
A voir également:
- Excel 2007 vba test si valeur saisie textbox
- Save as pdf office 2007 - Télécharger - Bureautique
- Test performance pc - Guide
- Si ou excel - Guide
- Liste déroulante excel - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
6 réponses
Une solution (pas franchement miracle mais bon...) :
1 - Créé une checkbox, et rend la invisible (ou place là à un endroit qui t'arrange).
2 - Sur modification de chacun de tes 50 champs, effectuer la même procédure qui coche la checkbox.
3 - Sur modification de ta combobox, vérifie que la checkbox est cochée. Si c'est le cas, met un message d'avertissement, puis décoche la.
On peut adapater cette méthode en remplissant une cellule plutôt qu'en utilisant une checkbox.
1 - Créé une checkbox, et rend la invisible (ou place là à un endroit qui t'arrange).
2 - Sur modification de chacun de tes 50 champs, effectuer la même procédure qui coche la checkbox.
3 - Sur modification de ta combobox, vérifie que la checkbox est cochée. Si c'est le cas, met un message d'avertissement, puis décoche la.
On peut adapater cette méthode en remplissant une cellule plutôt qu'en utilisant une checkbox.
J'ai fais une classe pour tester si une de mes 50 textbox change alors je coche la checkbox
Voila mon code :
En inscrivant des valeurs dans mes textbox, la checkbox ne se coche pas.
Pouvez vous m'aider?
Merci
Voila mon code :
Private Sub TxtBox_Change()
CheckBox1 = True
End Sub
En inscrivant des valeurs dans mes textbox, la checkbox ne se coche pas.
Pouvez vous m'aider?
Merci
C'est bon j'ai réussi à cocher ma checkbox par contre maintenant à la place de rendre invisible la checkbox j'aimerais utiliser un booléan.
Voici le code :
La variable txt se met bien à 1 mais quand la combobox change la msgbox n'apparaît pas.
Si je remplace :
par
Le msgbox apparaît.
Où est le problème.
Merci
Voici le code :
Public txt As Boolean
Private Sub TxtBox_Change()
txt = True
End Sub
Private Sub ComboBox1_Change()
If txt = True Then
Select Case MsgBox("Enregistrer les modifications", vbYesNo)
Case vbYes
Case vbNo
End Select
End If
End Sub
La variable txt se met bien à 1 mais quand la combobox change la msgbox n'apparaît pas.
Si je remplace :
If txt = True Then
par
If CheckBox1.Value = True Then
Le msgbox apparaît.
Où est le problème.
Merci
Ben ça me parait pas mal. Je ne comprend pas ce qui cloche.
J'ai testé de mon côté avec la variable publique, et ça a l'air de fonctionner.
Essaye de mettre un point d'arrêt sur le "If txt = True Then", pour observer sa valeur et son comportement.
Par contre faut penser à repasser la variable à false dans le code de ComboBox1_Change.
J'ai testé de mon côté avec la variable publique, et ça a l'air de fonctionner.
Essaye de mettre un point d'arrêt sur le "If txt = True Then", pour observer sa valeur et son comportement.
Par contre faut penser à repasser la variable à false dans le code de ComboBox1_Change.
J'ai testé avec les points d'arrêt.
Quand je met une valeur dans une des textbox la variable txt est égale à vide.
J'ai déclaré ma variable txt dans le module de classe. Faut-il la déclaré autre part?
Quand je met une valeur dans une des textbox la variable txt est égale à vide.
Private Sub TxtBox_Change()
txt = True
End Sub
J'ai déclaré ma variable txt dans le module de classe. Faut-il la déclaré autre part?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé juste avec une textbox et sa marche bien.
Je pense avoir trouver le problème, j'ai fais un module de classe pour ne pas être obligé de répéter le code pour chaque textbox et la variable public ne doit pas fonctionner dans les modules de classe.
Comment remédier à cela?
Merci.
Je pense avoir trouver le problème, j'ai fais un module de classe pour ne pas être obligé de répéter le code pour chaque textbox et la variable public ne doit pas fonctionner dans les modules de classe.
Comment remédier à cela?
Merci.
pour faire simple tu peux utiliser une variable de type boolean
que tu déclares public au niveau du module
public Valide_Profil as Boolean
tu l'initialise sur false dans le module
puis
dans le botoun enregistrer
tu le passe à true
quand tu choisis ton profil dans le combobox j'imagine
tu le contrôles si true....
if not Valide_Profil then
s= msgbox(.... non sauvegardé !!! ",vbokonly,"Alerte")
Exit sub ' tu quittes car non sauvegarde
endif
Valide_Profil =false
tu le remets avant de quitter Valide_Profil =false
que tu déclares public au niveau du module
public Valide_Profil as Boolean
tu l'initialise sur false dans le module
puis
dans le botoun enregistrer
tu le passe à true
quand tu choisis ton profil dans le combobox j'imagine
tu le contrôles si true....
if not Valide_Profil then
s= msgbox(.... non sauvegardé !!! ",vbokonly,"Alerte")
Exit sub ' tu quittes car non sauvegarde
endif
Valide_Profil =false
tu le remets avant de quitter Valide_Profil =false