Macro (Excel 2000) (Résolu)

Macro (Excel 2000) (Résolu) - VB/VBA/VBS - Programmation

Marsh Posté le 31-03-2006 à 18:42:34    

Bonjour! :hello:  
 
J'ai créé une boîte de dialogue avec bouton OK et macro associée avec à la fin "Unload Me "(pour valider la saisie et fermer la boîte de dialogue)!
 
Je voudrais valider la saisie et que la boîte de dialogue ne se ferme pas.
 
Avec quelle formule autre que Load ?
 
Merci de bien vouloir m'aider!


Message édité par JBARBE le 02-04-2006 à 09:40:08
Reply

Marsh Posté le 31-03-2006 à 18:42:34   

Reply

Marsh Posté le 31-03-2006 à 21:38:40    

Tu peux utiliser la méthode Hide, qui masque l'objet, sans la décharger.
Méthode Show pour afficher l'objet.
C'est-à-dire que tu caches ta boîte de dialogue, mais quelle est toujours existante. Lorsque tu l'affiche à nouveau, elle apparaitra telle que tu l'as laissée.
 
Exemple :

   UserForm1.Hide


 
;)

Reply

Marsh Posté le 01-04-2006 à 10:18:18    

Je voudrais lorsque je clique sur OK, que la boîte de dialogue enregistre la saisie mais ne se ferme pas (pas comme lorsque je clic sur Annuler).
 
Merci!


Message édité par JBARBE le 01-04-2006 à 10:19:21
Reply

Marsh Posté le 01-04-2006 à 10:53:45    

Ah ! ok ;)
 
Alors tu fais un clic droit sur le bouton OK. Puis tu cliques sur Format de contrôle... et là, tu décoches Faire disparaître.

Reply

Marsh Posté le 01-04-2006 à 11:11:47    

Il n'y a pas de "Format de contrôle"!

Reply

Marsh Posté le 01-04-2006 à 11:22:46    

Quand tu parles de "Boîte de dialogue", pourrais-tu me dire ce que tu fais pour la créer ?
S'agit-il d'une MessageBox (MsgBox "Toto" ) ?
Ou d'une boîte de dialogue créée en faisant un clic droit sur l'onglet d'une feuille, puis Insérer... ?
Ou d'une UserForm, créée dans l'éditeur Visual Basic ?


Message édité par juju2k le 01-04-2006 à 13:04:39
Reply

Marsh Posté le 01-04-2006 à 12:09:22    

D'une UserForm, créée dans l'éditeur Visual Basic  :bounce:

Reply

Marsh Posté le 01-04-2006 à 12:37:04    

Explique plus ce que tu veux faire ... en faite tu as un userform avec un bouton ok lorsque tu clique dessus les infos d'une textbox sont envoyé c'est sa ou non lol?

Reply

Marsh Posté le 01-04-2006 à 13:00:57    

Les données d'une textBox sont saisies dans le classeur ouvert!

Reply

Marsh Posté le 01-04-2006 à 13:09:58    

Ben le code de ma première réponse devrait faire l'affaire  :pt1cable: :
 
Dans un bouton, tu traites le contenu de ta zone de texte (tu mets le contenu dans une cellule du classeur, ou que sais-je), puis c'est tout. Tu ne mets pas fin à la UserForm.
 
Exemple :

Private Sub CommandButton1_Click()
    Cells(1, 1).Value = TextBox1.Value
End Sub


Là, la cellule A1 prend la valeur de la TextBox, mais la UserForm n'est pas fermée.
 
Si ça résoud pas ton problème, donne-nous un aperçu de ton code ;)

Reply

Marsh Posté le 01-04-2006 à 13:09:58   

Reply

Marsh Posté le 01-04-2006 à 13:28:31    

oui je suis d'accord et tu vide la textbox avec textbox1.text="" ou textbox1.clear

Reply

Marsh Posté le 01-04-2006 à 13:33:11    

Voici la macro tel qu'elle est conçue:
 
Private Sub CmdOKSG_Click()
Application.ScreenUpdating = False
Dim vMessageErreur As String
Dim vErreur As Integer
Dim I As Integer
vMessageErreur = ""
vErreur = 0
If FrmEncoderSG.TxtDateSG = "" Then
    vErreur = 1
    vMessageErreur = vMessageErreur + Chr(10) + "La date"
End If
If FrmEncoderSG.TxtPaiementSG = "" And FrmEncoderSG.TxtDepotSG = "" Then
    vErreur = 1
    vMessageErreur = vMessageErreur + Chr(10) + "Le Paiement ou le Dépot"
End If
If FrmEncoderSG.CmbTiersSG.Value = "" Then
    vErreur = 1
    vMessageErreur = vMessageErreur + Chr(10) + "Le Tiers"
End If
If vErreur = 1 Then
 MsgBox "Vous avez oublié" + vMessageErreur, , "Erreur"
 Exit Sub
End If
Sheets("SG" ).Activate
    Cells(4, 1).Value = CDate(FrmEncoderSG.TxtDateSG)
    Cells(4, 3).Value = FrmEncoderSG.CmbTiersSG.Value
    If FrmEncoderSG.TxtNSG.Value <> "" Then
    Cells(4, 2).Value = CDbl(FrmEncoderSG.TxtNSG)
    End If
    If FrmEncoderSG.TxtNSG.Value <> "" Then
    Range("repére_numéroSG" ).Value = CDbl(FrmEncoderSG.TxtNSG) + 1
    End If
    If FrmEncoderSG.TxtPaiementSG.Value <> "" Then
    Cells(4, 6).Value = CDbl(FrmEncoderSG.TxtPaiementSG)
    Else
    Cells(4, 7).Value = CDbl(FrmEncoderSG.TxtDepotSG)
    End If
selection_Tiers
Validation
selection_STAT
selection_STAT_Mois
Sheets("ventilation" ).Select
Range("A3" ).Select
Sheets("SG" ).Select
Range("B1" ).Select
Sheets("SG" ).Range("Zone_saisie" ).ClearContents
Unload FrmEncoderSG
Application.ScreenUpdating = True
End Sub
 
Cela marche avec la boîte de dialogue qui se ferme!

Reply

Marsh Posté le 01-04-2006 à 13:39:35    

à aucun moment tes cellules ne reçoivent les valeurs de tes variables ??
 
il faut faire une attribution avec le signe =

Reply

Marsh Posté le 01-04-2006 à 13:41:21    

a si pardon je n'avais pas vu

Reply

Marsh Posté le 01-04-2006 à 13:42:42    

Petite question tes valeurs s'écrase à chaque fois ? tu ne retient que les dernières

Reply

Marsh Posté le 01-04-2006 à 17:11:16    

Le bouton CmdOKSG est-il positionné sur la UserForm FrmEncoderSG ?
 
Tu décharges FrmEncoderSG dans cette ligne :

Unload FrmEncoderSG


 
Est-ce voulu ?

Reply

Marsh Posté le 01-04-2006 à 19:45:03    

Voici l'autre macro faisant appel à un bouton sur la feuille pour activer la boîte de dialogue: :hello:  
 
Sub BoutonEncoderSG()
Load FrmEncoderSG
FrmEncoderSG.TxtPaiementSG = SetFocus
FrmEncoderSG.TxtDateSG = Date
FrmEncoderSG.TxtNSG = Range("repére_numéroSG" )
FrmEncoderSG.Show
End Sub

Reply

Marsh Posté le 02-04-2006 à 09:39:12    

J'ai résolu le probléme :
 
J'ai remplacé Unload FrmEncoderSG dans Private Sub CmdOKSG_Click()  par:
 
FrmEncoderSG.CmbTiersSG = ""
FrmEncoderSG.TxtPaiementSG = ""
FrmEncoderSG.TxtDepotSG = ""
FrmEncoderSG.TxtDateSG = Date
FrmEncoderSG.TxtNSG = Range("repére_numéroSG" )
FrmEncoderSG.TxtPaiementSG.SetFocus
 
Merci beaucoup à tous!

Reply

Sujets relatifs:

Leave a Replay

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