cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 2017
-
18 déc. 2007 à 19:50
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
19 déc. 2007 à 23:28
Bonjour à Tous,
J'ai un petit souci car la sélection d'une cellule ne veut pas se faire avant l'appel d'un MsgBox. Elle ne se fait qu'après la disparition du MsgBox.
D'où ma question : comment forcer la sélection avant l'appel du MsgBox ?
Au départ la sélection est sur Cells(ligne, 2) et je voudrais qu'elle puisse se mettre en Cells(ligne, 4) si la fonction retourne 0 avant l'apparition du MsgBox. Même avec un DoEvents après le Select ça ne marche pas !
If fnSOMMES_P(ligne) = 0 Then
Cells(ligne, 4).Select
texte = " LE MODE DE PAIEMENT N'EST PAS INDIQUÉ "
MsgBox texte, vbCritical + vbOKOnly, " ATTENTION..."
fnOUBLI = True: Exit Function
End If
Merci de votre aide et bonne soirée,
Amicalement de Cheyenne
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 18 déc. 2007 à 23:25
Re,
D'abord merci pour vos réponses.
bigfish_le_vrai : effectivement j'utilise bien Application.ScreenUpdating = False, mais pas dans la procédure où se situe le problème. Par contre il est utilisé dans d'autres procédures. Normalement sous Excel 2000, le False s'annule en quittant la procédure où il se trouve.
Ce qui est icibizarre c'est que je pars d'une procédure où il y a bien le False, mais il est situé après l'appel de la fonction :
Sub Toto(y as integer)
if fnOUBLI(y)=0 then Exit Sub
Application.ScreenUpdating = False
---
---
End Sub
If fnSOMMES_P(ligne) = 0 Then
Application.ScreenUpdating = True
Cells(ligne, 4).Select
texte = " LE MODE DE PAIEMENT N'EST PAS INDIQUÉ "
MsgBox texte, vbCritical + vbOKOnly, " ATTENTION..."
fnOUBLI = True: Exit Function
End If
J'ai mis Application.ScreenUpdating = True juste avant l'appel de la sélection et c'est OK, puis il se remet à False après le retour de la fonction dans la procédure appellante.
jack : non, je l'ai indiqué dans mon post, le Doevents n'agit pas
Exploreur : je connais cette API, merci quand même, mais je suis en VBA et les feuilles n'ont pas de hwnd et code n'est pas destiné à une UserForm mais bien à une feuille.
Merci encore et bonne continuation à vous.
Cheyenne
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 déc. 2007 à 20:06
Salut
Ton code semble correct.
Les MsgBox sont de type "system" c'est à dire qu'elle bloque tous les programmes de l'application appelante.
Je pense qu'il devrait suffire d'ajouter un DoEvents avant la MsgBox, ou du moins, après le Select afin que le PC ait le temps de rafraichir l'affichage avant ce blocage.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 19 déc. 2007 à 00:24
... en fait cela ne fait pas tres longtemps que je repond au questions posées sur ce site. J'en ais quand meme poster quelques une et tu es le/la premier(e) a accepter ma reponse... snif...