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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro (Excel 2000) (Résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro (Excel 2000) (Résolu)

n°1336592
JBARBE
Posté le 31-03-2006 à 18:42:34  profilanswer
 

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
mood
Publicité
Posté le 31-03-2006 à 18:42:34  profilanswer
 

n°1336720
juju2k
Posté le 31-03-2006 à 21:38:40  profilanswer
 

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


 
;)

n°1336852
JBARBE
Posté le 01-04-2006 à 10:18:18  profilanswer
 

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
n°1336867
juju2k
Posté le 01-04-2006 à 10:53:45  profilanswer
 

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.

n°1336873
JBARBE
Posté le 01-04-2006 à 11:11:47  profilanswer
 

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

n°1336878
juju2k
Posté le 01-04-2006 à 11:22:46  profilanswer
 

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
n°1336906
JBARBE
Posté le 01-04-2006 à 12:09:22  profilanswer
 

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

n°1336922
Splinter_7
Posté le 01-04-2006 à 12:37:04  profilanswer
 

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?

n°1336934
JBARBE
Posté le 01-04-2006 à 13:00:57  profilanswer
 

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

n°1336941
juju2k
Posté le 01-04-2006 à 13:09:58  profilanswer
 

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 ;)

mood
Publicité
Posté le 01-04-2006 à 13:09:58  profilanswer
 

n°1336951
Splinter_7
Posté le 01-04-2006 à 13:28:31  profilanswer
 

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

n°1336954
JBARBE
Posté le 01-04-2006 à 13:33:11  profilanswer
 

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!

n°1336956
Splinter_7
Posté le 01-04-2006 à 13:39:35  profilanswer
 

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

n°1336957
Splinter_7
Posté le 01-04-2006 à 13:41:21  profilanswer
 

a si pardon je n'avais pas vu

n°1336959
Splinter_7
Posté le 01-04-2006 à 13:42:42  profilanswer
 

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

n°1337048
juju2k
Posté le 01-04-2006 à 17:11:16  profilanswer
 

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

Unload FrmEncoderSG


 
Est-ce voulu ?

n°1337110
JBARBE
Posté le 01-04-2006 à 19:45:03  profilanswer
 

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

n°1337246
JBARBE
Posté le 02-04-2006 à 09:39:12  profilanswer
 

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!


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

  Macro (Excel 2000) (Résolu)

 

Sujets relatifs
Copier une feuille Excel d'un classeur à un autre en VBS ![Résolu] Batch FTP avec pb de Date
[RESOLU] Comment faire des liens vers les pages de son site?header et force download [resolu]
[C++/résolu] Pool[VBA Excel] Sélectionner plusieurs onglets par une macro
[RESOLU] cherche script pour defilement de photos[Résolu] Un compteur de mots dans Word
Problème id dans création de tableau dynamique [résolu] 
Plus de sujets relatifs à : Macro (Excel 2000) (Résolu)


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