Fermer userform avec MSGBOX ouvert
Bonjour, j'ai un petit souci pour fermer un userform.
J'ouvre un userform pour demander une date, que je stock dans une cellule.
Je stock la valeur de la cellule dans une variable et je remets la cellule à "" (vide).
Ensuite, je compare cette date à plusieurs autres dates (si elles sont après la date entrée, je conserve la valeur de la case d'haut dessus.
et finalement un msgbox inscrit toutes les cases respectant la comparaison.
Exemple
Date rentrée : 1/1/16
tableau (A1/A2) :
12/12/2015 / 25
1/01/2016 / 126
12/01/2016 / 213
Une variable texte stock les éléments comme ceci : texte = texte + vbcr + "cellule du dessus dans la comparaison"
le msgbox écrit :
126
213 (j'ai fait un retour à la ligne à chaque ajout)
le problème, c'est que pendant l'affichage du msgbox, l'userform qui permet d'entrer la date référence reste sur l'écran ... (même après une ligne de fermeture une fois la date validée).
Je suis sur que c'est le msgbox qui fait ça, car j'utilise l'userform autre part et il ferme normalement. Et quand je valide le msgbox, il se ferme et l'userform aussi.
Je sais qu'il suffit de passer par un nouvel userform au lieu de msgbox, mais c'est tellement plus simple pour écrire un nombre indéfini d'éléments les uns en dessous des autres car il s'adapte automatiquement
Si quelqu'un à une solution.
Merci bien
Bonjour
alenbix a écrit :un nombre indéfini
Non mais important
alenbix a écrit :Si quelqu'un à une solution.
Affiche le MsgBox une fois l'Userform fermé
Sub OuvreUsf()
UserForm1.Show
MsgBox "........"
End Sub
Quand je parle de nombre indéfini, c'est parce qu'en fait je regarde le nombre d'absences d'un élève. Il peut dont aller de 0 à 50 très facilement.
Ensuite, pour fermer l'userform, je connais la commande Unload.
En fait, j'appelle mon useform en début de programme pour demander la date.
Une fois la date valider avec le bouton "valider", la date s'écrit dans la cellule active et la suite du code est Unload Userform1 (qui fonctionne très bien pour toutes les autres utilisation).
Le problème ici, c'est qu'après avoir valider la date, le programme compare toutes les dates pour voir si elles sont après celle entrée par l'utilisateur pour ensuite prendre celle ou l'élève est absent.
Et finalement, le msgbox affiche toutes les dates qui correspondent aux critères.
Mais pendant tout ce temps, l'userform qui demande la date ne se ferme pas. J'ai même rajouter une commande de fermeture juste avant l'affichage du msgbox, mais rien, on dirait qu'il lag derrière (si je le bouge, il s'étale sur tout le bureau ^^).
EDIT : je vous écris d'un autre PC et bizarrement il ne le fait plus .... je réessayerai ce soir sur l'autre PC ... Bizarre, nous avons la même version de microsoft
Bonjour
nico253 a écrit :si je le bouge, il s'étale sur tout le bureau ^^).
Je pense qu'il te manque aussi un Application.ScreenUdapting = True
Mais pour bien cerner le problème ton fichier en cause serait utile
il y a bien sur un Application.ScreenUdapting = True.
Bizarre, chez moi ça le fait, mais au boulot non ...
Je vais essayer de préparer un petit fichier avec les lignes. Car mettre le fichier complet ne servirai à rien (trop de ligne un peu partout pour comprendre la partie dont je parle).
Merci de l'aide
EDIT : OMG ... je viens de voir ton Application.ScreenUdapting, c'est = true, alors que je mets toujours = false pour un gain de temps. Mon userform se ferme correctement maintenant !
Mais pourquoi ça pose problème chez moi et pas sur un autre ordi ... mystère :/
Il semble en effet, que mon userform lance Application.ScreenUdapting = false à l'activation, ce qui l'empêche de disparaitre de l'écran lorsque je clique sur un bouton qui y figure et qui lui est censé le fermer.
Merci bien