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

Rechercher des sujets similaires à "fermer userform msgbox ouvert"