Excel 2007 vba test si valeur saisie textbox

Fermé
Seb - 12 juil. 2010 à 14:21
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 15 juil. 2010 à 10:21
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.

A voir également:

6 réponses

Yoskopolite Messages postés 83 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 9 novembre 2012 8
12 juil. 2010 à 16:01
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.
0
J'ai fais une classe pour tester si une de mes 50 textbox change alors je coche la checkbox
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
0
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 :

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
0
Yoskopolite Messages postés 83 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 9 novembre 2012 8
13 juil. 2010 à 17:00
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.
0
J'ai testé avec les points d'arrêt.
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?
0

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.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
15 juil. 2010 à 10:21
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
0