Macro (Excel 2000) (Résolu) - VB/VBA/VBS - Programmation
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 |
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!
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.
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 ?
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?
Marsh Posté le 01-04-2006 à 13:00:57
Les données d'une textBox sont saisies dans le classeur ouvert!
Marsh Posté le 01-04-2006 à 13:09:58
Ben le code de ma première réponse devrait faire l'affaire :
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() |
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
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
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!
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 =
Marsh Posté le 01-04-2006 à 13:42:42
Petite question tes valeurs s'écrase à chaque fois ? tu ne retient que les dernières
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 ?
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:
Sub BoutonEncoderSG()
Load FrmEncoderSG
FrmEncoderSG.TxtPaiementSG = SetFocus
FrmEncoderSG.TxtDateSG = Date
FrmEncoderSG.TxtNSG = Range("repére_numéroSG" )
FrmEncoderSG.Show
End Sub
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!
Marsh Posté le 31-03-2006 à 18:42:34
Bonjour!
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