Rapport de message :*
 

Re: Option d'affichage de UserForm

Titre du sujet : Re: Option d'affichage de UserForm
par myDearFriend! le 12/01/2008 23:33:33

Bonsoir PowerPlus,

Comme je le précise un peu partout ici, pour pouvoir être joint, un fichier doit faire 80 ko maximum (c'est déjà plus que la plupart des forums !).
Ton fichier zippé fait 106 Ko, il est donc normal qu'il soit refusé ici.

Pour info, il y a 5 feuilles masquées dans ton classeur : quand je parle d'exemple épuré, je ne parle pas d'éléments masqués mais bien de suppression de tout ce qui n'est pas utile à la compréhension du problème... Si tu l'avais fait, ton fichier zippé ferait environ 52 ko ! Et si tu avais fait l'effort de reconstituer un exemple simple (comme tu l'avais fait avec ton classeur1.xls ici), il pèserait encore moins et moi je perdrais moins de temps à rappeler ça pour la Xième fois...
Que ce soit ici ou ailleurs, sauf cas justifié, j'ai pour habitude de ne jamais répondre aux posts dont les fichiers sont joints autrement que par le forum... Comme tu l'héberges depuis ton propre espace Web et que tu ne peux pas tout savoir, on va dire que j'ai fait exception cette fois-ci... mais sache que ça restera une exception...

Concernant tes questions cette fois :
Citation :
PowerPlus a dit :
Mon UserForms'affiche automatiquement quand le format de la cellule est "##.00" c'est un format perso pour limité l'affichage de l'UserForm. Cette fonction est rentrer dans chaque feuille;
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Est-ce une bonne idée ? Pourrai t-on éviter de mettre un code sur chaque feuille (en le changeant) ?

Oui, l'idée est intéressante et peut être mise en oeuvre assez facilement.
Pour éviter de mettre le même code sur chaque feuille, tu peux placer le code ci-dessous dans le module de code de l'objet ThisWorkbook :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)
    If 
Target.NumberFormat "##.00" Then
        
'Ton code ici...
        '
        '
    End If
End Sub

... sans oublier de supprimer les procédures Private Sub Worksheet_SelectionChange() correspondante de chaque feuille.

Citation :
PowerPlus a dit :
Peut - on faire comme dans MDF_Calendar un bouton pour selectionner ou non l'affichage automatique ?

Oui, tu peux le faire avec un CheckBox (case à cocher) par exemple (je crois que c'est ce que tu as fait d'ailleurs dans ton USF).
Il te faut par contre stocker la valeur du CheckBox (True ou False) dans une cellule (cachée) de ton classeur pour pouvoir en mémoriser l'état pour une utilisation ultérieure.
C'est très simple, à l'ouverture de ton USF (dans l'évènement Initialize() du module de code du Userform) tu mets quelque chose comme :
CheckBox1.Value Sheets("Feuil1").Range("A1").value
puis, pour stocker la nouvelle valeur en cas de modification, tu mets dans ce même module de code :
Private Sub CheckBox1_Click()
    
Sheets("Feuil1").Range("A1").Value CheckBox1.Value
End Sub

Ensuite, dans le Private Sub Workbook_SheetSelectionChange() (voir ci-dessus), tu pourras mettre quelque chose comme :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)
    If 
Sheets("Feuil1").Range("A1").Value True Then
        
If Target.NumberFormat "##.00" Then
            
'Ton code ici...
            '
pour afficher le Userform
            
'
        End If
    End If
End Sub


Pour info, dans ton classeur, le code plante à l'ouverture car la feuille "Code" n'existe pas ou plus (pense à supprimer ou commenter les lignes de code qui ne sont plus requises suite à l'épuration du fichier)... en bref : pense également à tester tes fichiers avant de les poster STP. (oui ,je sais ça fait beaucoup à penser, mais ça ne demande que quelques efforts de logique)

Par ailleurs, dernière chose importante :
J'ai édité mon post du 03/01/08 à 16h11 dans CE FIL, lis-le (voir Edtion n°2). Je t'avais dit une ânerie là, il faut que tu en prennes connaissance et que tu rectifies ton projet en conséquence (désolé pour cette bourde, je ne suis pas infaillible non plus).

Cordialement,