Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

luke3300

XLDnaute Impliqué
Bonsoir le forum,

Je viens d'adapter un fichier pour qu'il s'ouvre sur un Userform avec choix. En fait je l'ai testé sur un fichier vierge créé à la minute et il fonctionne mais pas sur le fichier qu'il me faut. Je m'acharne là-dessus depuis l'après-midi sans résultat :-(
Quelqu'un pourrait-il voir où le bât blesse?
Je vous joint un fichier anonymisé d'exemple.

Merci d'avance à tous et excellente soirée.
 

Pièces jointes

Re : Userform avec choix

Bonsoir
Bin y fait rien ton code "Valider" ?? :
Code:
Private Sub CommandButton1_Click()
If OptionButton1 = True Then
  Sheet3.Visible = True
  Sheet6.Visible = False
  Else
  Sheet3.Visible = False
  Sheet6.Visible = True
End If
Unload Me
End Sub

Et ou sont tes feuilles ?? moi je suis "basic" si tu veux afficher et travailler avec , fait .activate ? non
Autre remarque : vous pouvez pas donner un nom à vos USF ? ça évite les quiproquo !! là : Unload ME !!
quand il y en a 3 ou 4 > unload Me ... puis Show Me ?pour debugger ... bon courage ; Peut-être suis je "Has Been" ?
 
Re : Userform avec choix

Bonsoir camarchepas et herve62,

Merci de vous être penché sur mon problème.

C'est tout à fait ça camarchepas 🙂 le userform fonctionne à merveille maintenant, merci beaucoup. Il y a cependant un autre souci dans le code, c'est la ligne en gras :-( :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim n$, s$, i&, dat, xsh As Worksheet
Application.ScreenUpdating = False

'on désactive la détection d'évènement
Application.EnableEvents = False

If Not Intersect(Sheet1.Range("C11:C17"), Target) Is Nothing Then
'on est bien dans la zone C1:C17
If Target.Count = 1 And IsDate(Target) Then
' Une seule cellule a été modifiée et la cellule à gauche
' est une date
Sheets(Langue).Visible = True
' dupliquer la feuille à la fin des onglets
Sheets(Langue).Copy After:=Worksheets(Worksheets.Count)
Sheets(Langue).Visible = False

'--- définir le nom de la feuille qui a été dupliquée
n = Target.Offset(, -1) 'valeur de la cellule à gauche
On Error Resume Next
Do
' on attribue le nom n à la feuille dupliquée
ActiveSheet.Name = n
If Err.Number = 0 Then
'Pas d'erreur -> on sort de la boucle
Exit Do
Else
' il y a eu une erreur -> le nom sans doute existe déjà
Err.Clear ' RAZ de l'erreur
i = i + 1 ' on oncrémente i
' nouveau nom à tester
n = Target.Offset(, -1) & "-" & i
End If
Loop

' mettre un commentaire pour la cellule A1 de la nouvelle feuille
On Error Resume Next
' texte du commentaire
s = "créée le #" & Format(Now(), "dd/mm/yyyy") & _
"# à (" & Format(Now(), "hh:mm:ss") & _
") avec comme date modifiée <" & Format(Target, "dd/mm/yyyy") & ">"
' ajout du commentaire
ActiveSheet.Range("T2").AddComment s
ActiveSheet.Range("T2").Comment.Visible = True

'ici, voici le code nécessaire pour afficher la date dans la cellule
ActiveSheet.Range("T2").Value = Format(Target, "mm/dd/yy")

' classement de la nouvelle feuille
' boucler sur l'ensemble des feuilles
For Each xsh In ThisWorkbook.Worksheets
If Not xsh Is ActiveSheet Then
'si la xsh n'est pas la feuille dupliquée (ie feuille active)
s = ""
On Error Resume Next
' récupérer le commentaire en de la cellule A1
' si pas de commentaire -> une erreur se produit et se propage
s = xsh.Range("T2").Comment.Text
If s <> "" Then
' la cellule A1 avait un commentaire
' on recherche la date comprise entre <.....>
s = Mid(s, InStr(s, "<") + 1, 10)
On Error GoTo 0
' si s est une date
If IsDate(s) Then
' le commenatire avait une date après un signe "<"
If Target.Value2 <= CDate(s) Then
' la date modifiée de la feuille "Front page" est
' inférieure à la date du commentaire de xsh
' -> on place la feuille dupliquée avant la feuille xsh
ActiveSheet.Move before:=xsh
' on ré-active la détection d'évènement
Application.EnableEvents = True
' on active Front page
Sheets(Langue).Activate
Exit For
End If
End If
End If
End If
Next xsh
End If
End If
Application.ScreenUpdating = False
' on ré-active la détection d'évènement
Application.EnableEvents = True
' on active Sheets("FR")
Sheets("GUIDE").Activate
Application.ScreenUpdating = False
End Sub

Sub re_activer_détection_evenement()
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
 
Re : Userform avec choix

re,

Il devait créer des onglets en se basant sur le formulaire choisi via la langue (FR ou NL) avec comme nom les valeurs des cellules B11 à B17 et en classant ceux-ci par date (dates qui sont ajoutées manuellement en cellules C11 à C17).

Désolé :-(
 
Re : Userform avec choix

Bonjour le forum,
C'est bien ce que je pensais, je crois que le code ne tient plus compte de la feuille rendue visible par le choix de la langue via le Userform ... quelqu'un a une idée?
Merci d'avance et bon mercredi.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
38
Affichages
1 K
Réponses
2
Affichages
261
  • Question Question
Microsoft 365 Personal.xlsb
Réponses
4
Affichages
656
Réponses
10
Affichages
535
Retour