Hello,
Voici ma question,
je suis en train de faire un formulaire pour des inspections. mais voilà, j'habite une région bilingue et je fais ce formulaire en français / allemand via une liste déroulante dans une cellule avec les référence "A & F".
j'aimerais également changer les onglets par la même occasion (ex: Données / Daten ou Récapitulatif / Zusammenfassung)
Bonjour
tu peux mettre le nom de l'onglet dans la cellule D1 par exemple et par macro nommer l'onglet comme la cellule
ActiveSheet.Name = Range("D1").Value
Merci, mais je suis un néo fit dans excel et j'ai un soucis d'application.
je te joins le fichier pour que tu regarde pourquoi je n'ai pas dans la combobox l'allemand et le français.
et de plus j'aimerais que la cellule F6 me mette si c'est allemand un "D" et un "F" pour le français.
Le programme ne fonctionnait pas car, dans mon exemple, j'avais nommé une plage de cellules "Langues", ce que tu as omis de faire dans la colonne AK. J'ai rajouté une ligne dans la macro ComboBox1_Change :
Explication du bug : le programme n'a plus accès à la zone "A1:K40" de la feuille "Données" car tu as limité l'affichage de celle-ci à la plage "A1:K40".
Je crains que tu ne puisses limiter ta feuille à cette zone, ou alors il faudrait créer une feuille spécifique pour les données et qui serait masquée. Comme ton fichier est protégé, je ne peux rien y faire pour le moment.
Après une bonne nuit de réflexion, au petit matin la solution m'est apparue (comme pour le curé d'un certain chanteur).
Ce n'était pas un bug, juste un oubli. Ton classeur étant protégé, il est impossible de modifier les noms de feuilles, de les déplacer, d'en ajouter ou d'en supprimer. J'ai donc ajouté ces deux lignes :
Code:
Private Sub ComboBox1_Change()
Dim Ligne As Integer, Col As Integer, sh As Object, Nf As Range
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect ' <---------- Déprotection du classeur
Columns("AK:BC").Hidden = False
Ligne = ComboBox1.ListIndex + 2
For Each sh In Sheets
Set Nf = Rows("1:" & Ligne + 1).Find(sh.CodeName, LookIn:=xlValues, lookat:=xlWhole)
If Not Nf Is Nothing Then
Col = Nf.Column
sh.Name = Cells(Ligne, Col)
End If
Next
Range("F6") = IIf(ComboBox1.ListIndex = 0, "D", "F")
Columns("AK:BC").Hidden = True
ActiveWorkbook.Protect ' <---------- Protection du classeur
Application.ScreenUpdating = True
End Sub
Et ça marche.
En te souhaitant une bonne journée.
Cordialement.
PS : pas de risque de modification intempestive de ton classeur, la macro interdisant toute intervention manuelle durant son déroulement.
Après une bonne nuit de réflexion, au petit matin la solution m'est apparue (comme pour le curé d'un certain chanteur).
Ce n'était pas un bug, juste un oubli. Ton classeur étant protégé, il est impossible de modifier les noms de feuilles, de les déplacer, d'en ajouter ou d'en supprimer. J'ai donc ajouté ces deux lignes :
Code:
Private Sub ComboBox1_Change()
Dim Ligne As Integer, Col As Integer, sh As Object, Nf As Range
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect ' <---------- Déprotection du classeur
Columns("AK:BC").Hidden = False
Ligne = ComboBox1.ListIndex + 2
For Each sh In Sheets
Set Nf = Rows("1:" & Ligne + 1).Find(sh.CodeName, LookIn:=xlValues, lookat:=xlWhole)
If Not Nf Is Nothing Then
Col = Nf.Column
sh.Name = Cells(Ligne, Col)
End If
Next
Range("F6") = IIf(ComboBox1.ListIndex = 0, "D", "F")
Columns("AK:BC").Hidden = True
ActiveWorkbook.Protect ' <---------- Protection du classeur
Application.ScreenUpdating = True
End Sub
Et ça marche.
En te souhaitant une bonne journée.
Cordialement.
PS : pas de risque de modification intempestive de ton classeur, la macro interdisant toute intervention manuelle durant son déroulement.
Dans la mise en forme conditionnelle, tu ne peux pas changer le texte de la cellule concernée (à ma connaissance du moins). Il faut passer par une macro événementielle. Peux-tu préciser quelles sont les cellules concernées par cette mise en forme ?
Quand je mets un "X" dans la cellule A1 elle m'inscrit dans la Cellule B1 par ex. "svp remplir" et que je peux remplir cette cellule B1 avec un commentaire.
Par contre si par la suite j’efface le "X" de la cellule A1 il m’efface le "svp remplir" mais pas le commentaire.