Blocage sur procèdure

3 réponses
Avatar
Michel Mto
Bonjour à toutes et à tous,

Dans une procèdure, j'ouvre un fichier excel avec ceci :

Workbooks.Open Filename:= _
"C:chemindufichier\nomdufichier.xls"
Sur ce classeur j'ai un userform qui s'affiche par défaut à l'ouverture,
sur lequel il y a différents bouton à cliquer.

Le problème est que dans la procèdure qui ouvre ce fichier, j'ai du code qui
suit et qui n'est pas excécuté.
La seule manière de poursuivre l'excécution du code c'est que je clique sur
la croix de fermeture de mon userform, j'entre mon mot de passe (nécessaire
à la fermeture de ce userform).

et là mon code se poursuit sans problème, avec ce qui suit :

NbOccurencesMaxi = 720
Dim Fournisseur() As String
ReDim Preserve Fournisseur(NbOccurencesMaxi)
Dim MontantFourniss() As Single
ReDim Preserve MontantFourniss(NbOccurencesMaxi)
Dim Echeance() As Date
ReDim Preserve Echeance(NbOccurencesMaxi)
Dim ModeRèglement() As String
ReDim Preserve ModeRèglement(NbOccurencesMaxi)
Worksheets("Essai2").Cells.ClearContents
t = 1
L = 2
For i = 1 To 12
Name = Worksheets(i + 1).Name
Worksheets(Name).Select
Fin = Range("D65535").End(xlUp).Row
etc ...

Est -il possible de faire poursuivre le code sans intervention de ma part ??

Merci par avance de votre aide

Michel MTO

3 réponses

Avatar
michdenis
Bonjour,

Ce que tu éprouves comme problématique correspond à la caractéristique
d'une fenêtre "modale" comme dans la commande
Userform1.show
Le statut de MODAL rend la réponse obligatoire à la fenêtre obligatoire avant
que le reste du code puisse s'exécuter. Tu remarqueras aussi que lorsqu'une fenêtre
modale est ouverte, tu ne peux pas sélectionner un autre objet ou appeler une autre
commande du menu...une fenêtre modale EXIGE UNE RÉPONSE avant de continuer.

Un autre exemple de fenêtre MODAL :
Msgbox ...
ou
Application.InputBox....

Cependant, dans le cas d'un formulaire, on peut l'ouvrir dans une fenêtre NON MODALE
avec une commande suivante :
Userform1.Show 0 (commande disponible en standard à partir de la version Excel 2000)
Dans ce cas, le formulaire s'affiche mais le reste des lignes de commandes de la procédure
s'exécute normalement et immédiatement sans attendre la fermeture du formulaire. De plus
lorsque le formulaire est visible, on a toujours accès à la feuille de calcul et au menu.


--
MichD
--------------------------------------------


"Michel Mto" a écrit dans le message de groupe de discussion :
i2u4on$aed$
Bonjour à toutes et à tous,

Dans une procèdure, j'ouvre un fichier excel avec ceci :

Workbooks.Open Filename:= _
"C:chemindufichiernomdufichier.xls"
Sur ce classeur j'ai un userform qui s'affiche par défaut à l'ouverture,
sur lequel il y a différents bouton à cliquer.

Le problème est que dans la procèdure qui ouvre ce fichier, j'ai du code qui
suit et qui n'est pas excécuté.
La seule manière de poursuivre l'excécution du code c'est que je clique sur
la croix de fermeture de mon userform, j'entre mon mot de passe (nécessaire
à la fermeture de ce userform).

et là mon code se poursuit sans problème, avec ce qui suit :

NbOccurencesMaxi = 720
Dim Fournisseur() As String
ReDim Preserve Fournisseur(NbOccurencesMaxi)
Dim MontantFourniss() As Single
ReDim Preserve MontantFourniss(NbOccurencesMaxi)
Dim Echeance() As Date
ReDim Preserve Echeance(NbOccurencesMaxi)
Dim ModeRèglement() As String
ReDim Preserve ModeRèglement(NbOccurencesMaxi)
Worksheets("Essai2").Cells.ClearContents
t = 1
L = 2
For i = 1 To 12
Name = Worksheets(i + 1).Name
Worksheets(Name).Select
Fin = Range("D65535").End(xlUp).Row
etc ...

Est -il possible de faire poursuivre le code sans intervention de ma part ??

Merci par avance de votre aide

Michel MTO
Avatar
Michel Mto
Bonjour MichDenis et merci pour ta réponse,

si j'utilise une fenêtre NON MODALE avec la commande suivante :
Userform1.Show 0
Que se passera-t-il lorsque l'uilisateur ouvrira en direct (et non pas en
utilisant Workbooks.Open Filename: ="C:chemindufichiernomdufichier.xls"
dans une procèdure quelconque) ?
Est ce qu'il pourra fermé l'userform, ou est ce qu'il pourra effectuer une
action quelconque ?
Ce qui ne m'arrangerait pas.

Je voudrais donner tous les droits à la macro appelante (dans la limite de
son code !!), mais pas à l'utilisateur qui ouvre le fichier en direct.

Michel MTO


"michdenis" a écrit dans le message de news:
i2u8b5$fpf$
Bonjour,

Ce que tu éprouves comme problématique correspond à la caractéristique
d'une fenêtre "modale" comme dans la commande
Userform1.show
Le statut de MODAL rend la réponse obligatoire à la fenêtre obligatoire


avant
que le reste du code puisse s'exécuter. Tu remarqueras aussi que


lorsqu'une fenêtre
modale est ouverte, tu ne peux pas sélectionner un autre objet ou appeler


une autre
commande du menu...une fenêtre modale EXIGE UNE RÉPONSE avant de


continuer.

Un autre exemple de fenêtre MODAL :
Msgbox ...
ou
Application.InputBox....

Cependant, dans le cas d'un formulaire, on peut l'ouvrir dans une fenêtre


NON MODALE
avec une commande suivante :
Userform1.Show 0 (commande disponible en standard à partir de la version


Excel 2000)
Dans ce cas, le formulaire s'affiche mais le reste des lignes de commandes


de la procédure
s'exécute normalement et immédiatement sans attendre la fermeture du


formulaire. De plus
lorsque le formulaire est visible, on a toujours accès à la feuille de


calcul et au menu.


--
MichD
--------------------------------------------


"Michel Mto" a écrit dans le message de groupe


de discussion :
i2u4on$aed$
Bonjour à toutes et à tous,

Dans une procèdure, j'ouvre un fichier excel avec ceci :

Workbooks.Open Filename:= _
"C:chemindufichiernomdufichier.xls"
Sur ce classeur j'ai un userform qui s'affiche par défaut à l'ouverture,
sur lequel il y a différents bouton à cliquer.

Le problème est que dans la procèdure qui ouvre ce fichier, j'ai du code


qui
suit et qui n'est pas excécuté.
La seule manière de poursuivre l'excécution du code c'est que je clique


sur
la croix de fermeture de mon userform, j'entre mon mot de passe


(nécessaire
à la fermeture de ce userform).

et là mon code se poursuit sans problème, avec ce qui suit :

NbOccurencesMaxi = 720
Dim Fournisseur() As String
ReDim Preserve Fournisseur(NbOccurencesMaxi)
Dim MontantFourniss() As Single
ReDim Preserve MontantFourniss(NbOccurencesMaxi)
Dim Echeance() As Date
ReDim Preserve Echeance(NbOccurencesMaxi)
Dim ModeRèglement() As String
ReDim Preserve ModeRèglement(NbOccurencesMaxi)
Worksheets("Essai2").Cells.ClearContents
t = 1
L = 2
For i = 1 To 12
Name = Worksheets(i + 1).Name
Worksheets(Name).Select
Fin = Range("D65535").End(xlUp).Row
etc ...

Est -il possible de faire poursuivre le code sans intervention de ma part


??

Merci par avance de votre aide

Michel MTO

Avatar
michdenis
Je ne comprends pas trop le sens de ta question
mais il semble que ton problème de base est résolu.

--
MichD
--------------------------------------------


"Michel Mto" a écrit dans le message de groupe de discussion :
i2ue47$oko$
Bonjour MichDenis et merci pour ta réponse,

si j'utilise une fenêtre NON MODALE avec la commande suivante :
Userform1.Show 0
Que se passera-t-il lorsque l'uilisateur ouvrira en direct (et non pas en
utilisant Workbooks.Open Filename: ="C:chemindufichiernomdufichier.xls"
dans une procèdure quelconque) ?
Est ce qu'il pourra fermé l'userform, ou est ce qu'il pourra effectuer une
action quelconque ?
Ce qui ne m'arrangerait pas.

Je voudrais donner tous les droits à la macro appelante (dans la limite de
son code !!), mais pas à l'utilisateur qui ouvre le fichier en direct.

Michel MTO


"michdenis" a écrit dans le message de news:
i2u8b5$fpf$
Bonjour,

Ce que tu éprouves comme problématique correspond à la caractéristique
d'une fenêtre "modale" comme dans la commande
Userform1.show
Le statut de MODAL rend la réponse obligatoire à la fenêtre obligatoire


avant
que le reste du code puisse s'exécuter. Tu remarqueras aussi que


lorsqu'une fenêtre
modale est ouverte, tu ne peux pas sélectionner un autre objet ou appeler


une autre
commande du menu...une fenêtre modale EXIGE UNE RÉPONSE avant de


continuer.

Un autre exemple de fenêtre MODAL :
Msgbox ...
ou
Application.InputBox....

Cependant, dans le cas d'un formulaire, on peut l'ouvrir dans une fenêtre


NON MODALE
avec une commande suivante :
Userform1.Show 0 (commande disponible en standard à partir de la version


Excel 2000)
Dans ce cas, le formulaire s'affiche mais le reste des lignes de commandes


de la procédure
s'exécute normalement et immédiatement sans attendre la fermeture du


formulaire. De plus
lorsque le formulaire est visible, on a toujours accès à la feuille de


calcul et au menu.


--
MichD
--------------------------------------------


"Michel Mto" a écrit dans le message de groupe


de discussion :
i2u4on$aed$
Bonjour à toutes et à tous,

Dans une procèdure, j'ouvre un fichier excel avec ceci :

Workbooks.Open Filename:= _
"C:chemindufichiernomdufichier.xls"
Sur ce classeur j'ai un userform qui s'affiche par défaut à l'ouverture,
sur lequel il y a différents bouton à cliquer.

Le problème est que dans la procèdure qui ouvre ce fichier, j'ai du code


qui
suit et qui n'est pas excécuté.
La seule manière de poursuivre l'excécution du code c'est que je clique


sur
la croix de fermeture de mon userform, j'entre mon mot de passe


(nécessaire
à la fermeture de ce userform).

et là mon code se poursuit sans problème, avec ce qui suit :

NbOccurencesMaxi = 720
Dim Fournisseur() As String
ReDim Preserve Fournisseur(NbOccurencesMaxi)
Dim MontantFourniss() As Single
ReDim Preserve MontantFourniss(NbOccurencesMaxi)
Dim Echeance() As Date
ReDim Preserve Echeance(NbOccurencesMaxi)
Dim ModeRèglement() As String
ReDim Preserve ModeRèglement(NbOccurencesMaxi)
Worksheets("Essai2").Cells.ClearContents
t = 1
L = 2
For i = 1 To 12
Name = Worksheets(i + 1).Name
Worksheets(Name).Select
Fin = Range("D65535").End(xlUp).Row
etc ...

Est -il possible de faire poursuivre le code sans intervention de ma part


??

Merci par avance de votre aide

Michel MTO