Dans une application, je dispose de formulaires dont je réduit la taille via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée à effacer dans un champ en arrêtant la procédure. Sur ce formulaire intermédiaire se trouve un bouton Annuler avec le code suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire avant d'arrêter la procédure en cours par le "end", le formulaire non modal ne se réaffiche pas. Seulement ensuite mon formulaire étant modal, je ne peux plus accéder aux cellules pour modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de procéder.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
simulacre25
simulacre25 a écrit le 22/02/2011 à 14h33 :
Bonjour,
Dans une application, je dispose de formulaires dont je réduit la taille via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée à effacer dans un champ en arrêtant la procédure. Sur ce formulaire intermédiaire se trouve un bouton Annuler avec le code suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire avant d'arrêter la procédure en cours par le "end", le formulaire non modal ne se réaffiche pas. Seulement ensuite mon formulaire étant modal, je ne peux plus accéder aux cellules pour modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au sein de ma sub une boite de dialogue vbOKCancel qui me permet de décharger le formulaire modal, de sortir facilement de la procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long Userform_Choix_Periode.Show MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période " & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test de la dernière cellule remplie) Dim MaPlage As Range Set MaPlage = Range("P1") While Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)).Value <> "" Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)) Wend
Dim DerLigne As Long DerLigne = MaPlage.Row 'Supprimer les lignes contenant la période choisie Dim Compteur As Long For Compteur = DerLigne To 1 Step -1 If Range("P" & Compteur).Value = MaPeriode Then Rows(Range("P" & Compteur).Row).Delete End If Next Compteur
Application.ScreenUpdating = True End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas pourquoi je me complique la vie...
simulacre25 a écrit le 22/02/2011 à 14h33 :
Bonjour,
Dans une application, je dispose de formulaires dont je réduit la taille
via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est
donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un
formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée
à effacer dans un champ en arrêtant la procédure. Sur ce
formulaire intermédiaire se trouve un bouton Annuler avec le code
suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire
avant d'arrêter la procédure en cours par le "end", le
formulaire non modal ne se réaffiche pas. Seulement ensuite mon
formulaire étant modal, je ne peux plus accéder aux cellules pour
modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela
ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de
procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au sein de ma sub une boite de dialogue vbOKCancel qui me permet de décharger le formulaire modal, de sortir facilement de la procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long
Userform_Choix_Periode.Show
MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période " & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then
Unload Userform_Choix_Periode
Sheets("Accueil").Select
Range("H20").Select
UserForm_Parametrage_ALG.Show
DoEvents
Exit Sub
End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test de la dernière cellule remplie)
Dim MaPlage As Range
Set MaPlage = Range("P1")
While Range(MaPlage.End(xlDown).Address(rowabsolute:=False, columnabsolute:=False)).Value <> ""
Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:=False, columnabsolute:=False))
Wend
Dim DerLigne As Long
DerLigne = MaPlage.Row
'Supprimer les lignes contenant la période choisie
Dim Compteur As Long
For Compteur = DerLigne To 1 Step -1
If Range("P" & Compteur).Value = MaPeriode Then
Rows(Range("P" & Compteur).Row).Delete
End If
Next Compteur
Application.ScreenUpdating = True
End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas pourquoi je me complique la vie...
Dans une application, je dispose de formulaires dont je réduit la taille via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée à effacer dans un champ en arrêtant la procédure. Sur ce formulaire intermédiaire se trouve un bouton Annuler avec le code suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire avant d'arrêter la procédure en cours par le "end", le formulaire non modal ne se réaffiche pas. Seulement ensuite mon formulaire étant modal, je ne peux plus accéder aux cellules pour modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au sein de ma sub une boite de dialogue vbOKCancel qui me permet de décharger le formulaire modal, de sortir facilement de la procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long Userform_Choix_Periode.Show MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période " & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test de la dernière cellule remplie) Dim MaPlage As Range Set MaPlage = Range("P1") While Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)).Value <> "" Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)) Wend
Dim DerLigne As Long DerLigne = MaPlage.Row 'Supprimer les lignes contenant la période choisie Dim Compteur As Long For Compteur = DerLigne To 1 Step -1 If Range("P" & Compteur).Value = MaPeriode Then Rows(Range("P" & Compteur).Row).Delete End If Next Compteur
Application.ScreenUpdating = True End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas pourquoi je me complique la vie...
simulacre25
simulacre25 a écrit le 22/02/2011 à 18h28 :
simulacre25 a écrit le 22/02/2011 à 14h33 :
Bonjour,
Dans une application, je dispose de formulaires dont je réduit la taille via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée à effacer dans un champ en arrêtant la procédure. Sur ce formulaire intermédiaire se trouve un bouton Annuler avec le code suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire avant d'arrêter la procédure en cours par le "end", le formulaire non modal ne se réaffiche pas. Seulement ensuite mon formulaire étant modal, je ne peux plus accéder aux cellules pour modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au sein de ma sub une boite de dialogue vbOKCancel qui me permet de décharger le formulaire modal, de sortir facilement de la procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long Userform_Choix_Periode.Show MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période " & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test de la dernière cellule remplie) Dim MaPlage As Range Set MaPlage = Range("P1") While Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)).Value <> "" Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)) Wend
Dim DerLigne As Long DerLigne = MaPlage.Row 'Supprimer les lignes contenant la période choisie Dim Compteur As Long For Compteur = DerLigne To 1 Step -1 If Range("P" & Compteur).Value = MaPeriode Then Rows(Range("P" & Compteur).Row).Delete End If Next Compteur
Application.ScreenUpdating = True End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas pourquoi je me complique la vie...
Un correction au code pour que cela fonctionne correctement (j'avais oublié de définir en variable la réponse à ma question afin de continuer ou non) :
Dim Message As Long Message = MsgBox("Suppression des données de la période " & Maperiode & "", vbYesNo, "Wyrd")
If Message = vbNo Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If
Bonsoir
simulacre25 a écrit le 22/02/2011 à 18h28 :
simulacre25 a écrit le 22/02/2011 à 14h33 :
Bonjour,
Dans une application, je dispose de formulaires dont je réduit la
taille
via un bouton pour pouvoir accéder aux feuilles excel. Le show modal
est
donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un
formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une
donnée
à effacer dans un champ en arrêtant la procédure. Sur ce
formulaire intermédiaire se trouve un bouton Annuler avec le code
suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire
avant d'arrêter la procédure en cours par le "end", le
formulaire non modal ne se réaffiche pas. Seulement ensuite mon
formulaire étant modal, je ne peux plus accéder aux cellules
pour
modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela
ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de
procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au
sein de ma sub une boite de dialogue vbOKCancel qui me permet de
décharger le formulaire modal, de sortir facilement de la
procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long
Userform_Choix_Periode.Show
MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période
" & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then
Unload Userform_Choix_Periode
Sheets("Accueil").Select
Range("H20").Select
UserForm_Parametrage_ALG.Show
DoEvents
Exit Sub
End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test
de la dernière cellule remplie)
Dim MaPlage As Range
Set MaPlage = Range("P1")
While Range(MaPlage.End(xlDown).Address(rowabsolute:=False,
columnabsolute:=False)).Value <> ""
Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:=False,
columnabsolute:=False))
Wend
Dim DerLigne As Long
DerLigne = MaPlage.Row
'Supprimer les lignes contenant la période choisie
Dim Compteur As Long
For Compteur = DerLigne To 1 Step -1
If Range("P" & Compteur).Value = MaPeriode Then
Rows(Range("P" & Compteur).Row).Delete
End If
Next Compteur
Application.ScreenUpdating = True
End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas
pourquoi je me complique la vie...
Un correction au code pour que cela fonctionne correctement (j'avais oublié de définir en variable la réponse à ma question afin de continuer ou non) :
Dim Message As Long
Message = MsgBox("Suppression des données de la période " & Maperiode & "", vbYesNo, "Wyrd")
If Message = vbNo Then
Unload Userform_Choix_Periode
Sheets("Accueil").Select
Range("H20").Select
UserForm_Parametrage_ALG.Show
DoEvents
Exit Sub
End If
Dans une application, je dispose de formulaires dont je réduit la taille via un bouton pour pouvoir accéder aux feuilles excel. Le show modal est donc à False pour pouvoir modifier et coller des données.
Un de mes formulaires non modaux (UserForm_Parametrage) fait appel à un formulaire modal (Userform_Choix_Periode) pour pouvoir saisir une donnée à effacer dans un champ en arrêtant la procédure. Sur ce formulaire intermédiaire se trouve un bouton Annuler avec le code suivant :
Le souci est que si je ne force pas le réaffichage de mon formulaire avant d'arrêter la procédure en cours par le "end", le formulaire non modal ne se réaffiche pas. Seulement ensuite mon formulaire étant modal, je ne peux plus accéder aux cellules pour modification.
J'ai tenté un Unload puis un réaffichage en modal = 0 mais cela ne marche pas.
Merci de m'éclairer sur ce qui ne convient pas dans ma façon de procéder.
Bonne journée
J'ai trouvé une solution qui fonctionne :
Au lieu d'utiliser un bouton "Annuler" autonome, j'ai placé au sein de ma sub une boite de dialogue vbOKCancel qui me permet de décharger le formulaire modal, de sortir facilement de la procédure et de réafficher mon formulaire non modal sans souci.
Sub Periode_Suppression()
Dim MonAnnee As Long Userform_Choix_Periode.Show MaPeriode = Sheets("Param").Range("B3").Value
Message = MsgBox("Suppression des données de la période " & MaPeriode & "", vbOKCancel)
If vbCancel = 2 Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If
Application.ScreenUpdating = False
'définition d'une plage de cellules contenant des données (test de la dernière cellule remplie) Dim MaPlage As Range Set MaPlage = Range("P1") While Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)).Value <> "" Set MaPlage = Range(MaPlage.End(xlDown).Address(rowabsolute:lse, columnabsolute:lse)) Wend
Dim DerLigne As Long DerLigne = MaPlage.Row 'Supprimer les lignes contenant la période choisie Dim Compteur As Long For Compteur = DerLigne To 1 Step -1 If Range("P" & Compteur).Value = MaPeriode Then Rows(Range("P" & Compteur).Row).Delete End If Next Compteur
Application.ScreenUpdating = True End Sub
Voilà, si cela peut aider. En même temps des fois, je ne vois pas pourquoi je me complique la vie...
Un correction au code pour que cela fonctionne correctement (j'avais oublié de définir en variable la réponse à ma question afin de continuer ou non) :
Dim Message As Long Message = MsgBox("Suppression des données de la période " & Maperiode & "", vbYesNo, "Wyrd")
If Message = vbNo Then Unload Userform_Choix_Periode Sheets("Accueil").Select Range("H20").Select UserForm_Parametrage_ALG.Show DoEvents Exit Sub End If