Bonjour, je viens vers vous car je ne comprend pas pourquoi mon code VBA que j'ai mis dans ThisWorkbook ne fonctionne pas. Pouvez vous m'aider svp. J'ai mis des commentaire dans mon fichier excel dans l'onglet "Sommaire" pour expliquer ce que je veux comme résultats.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
par
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Ainsi la macro sera active sur toutes les feuilles.
NB: Je n'ai pas vérifié le reste de la macro, commencez par cette modif et revenez si d'autres problèmes surviennent. Mais en première approche tout semble fonctionner mais nécessite un returm quand on sélectionne la feuille.
Peut être plus simple avec juste un clic sur la cellule :
VB:
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim F
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [C1:O2]) Is Nothing Then
For Each F In Worksheets
If F.Name <> Target And F.Name <> "Sommaire" Then
Sheets(F.Name).Visible = xlSheetVeryHidden
Else
With Sheets(F.Name)
Application.EnableEvents = False
.Visible = True
.Select
.Range(Target.Address).Interior.Color = RGB(220, 140, 255)
.Range("A1").Select
End With
Sheets("Sommaire").Range(Target.Address).Interior.Color = xlNone
End If
Next F
End If
Application.EnableEvents = True
End Sub
A noter que la plage A..Z soit toujours au même endroit, donc j'ai modifié sa place dans Sommaire en C1:O2.
Merci pour votre réponse.
Je viens de faire un essai, je ne comprend pas aucun résultat je clic sur une cellule rien ne ce passe. Par contre si je mets un bouton et que je mets ce code cela fonctionne. "voir fichier joint bouton actif dans l'onglet sommaire.
Sub TestCreationOnglet()
Dim cellValue As String
Dim newSheet As Worksheet
Dim Target As Range
' Test pour une cellule spécifique
Set Target = ThisWorkbook.Sheets("Sommaire").Range("K2") ' Vous pouvez changer cette référence
' Récupérer la valeur de la cellule A2 pour tester
cellValue = Target.Value
On Error Resume Next
Set newSheet = ThisWorkbook.Sheets(cellValue)
On Error GoTo 0
If newSheet Is Nothing Then
' Créer un nouvel onglet si l'onglet n'existe pas
Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
newSheet.Name = cellValue
MsgBox "L'onglet " & cellValue & " a été créé."
Else
' Afficher l'onglet s'il existe déjà
newSheet.Visible = xlSheetVisible
MsgBox "L'onglet " & cellValue & " est visible."
End If
End Sub
Re,
Alors j'ai tous supprimé dans ThisWorkbook j'ai remis le code et cela fonctionne maintenant, sauf lorsque je clic sur certaine cellule comme D2 qui correspond à la lettre O et aussi cel F2 et H2... j'ai une cellule en ligne 3 qui se met en violet aussi.
Vous parlez de votre fichier ou de ma PJ ?
Car dans ma PJ cela fonctionne sur mon PC :
Si c'est votre fichier, et s'il n'y a pas de données sensibles, envoyez le, j'essaierais de voir où ça coince.
NB :
Dans votre fichier vous avez bien ramené la zone A..Z en C1:O2 ?
Vérifiez si en D2,F2,H2 ... qu(il n'y a pas d'espaces. comme par ex "O " au lieu de "O".
Idem avec les noms d'onglets. Evidemment sheets("O ") n'est pas sheets("O")
Si c'est votre fichier, et s'il n'y a pas de données sensibles, envoyez le, j'essaierais de voir où ça coince.
NB :
Dans votre fichier vous avez bien ramené la zone A..Z en C1:O2 ?
Vérifiez si en D2,F2,H2 ... qu(il n'y a pas d'espaces. comme par ex "O " au lieu de "O".
Idem avec les noms d'onglets. Evidemment sheets("O ") n'est pas sheets("O")
Bonjour, alors j'ai de nouveau tous effacé et recommencé, le code fonctionne mais j'ai un soucis avec la lettre o je ne sais pas pourquoi quand je clic sur la cellule c'est à dire que ce soit sur l'onglet sommaire ou autre onglet sur la lettre o il m'ouvre bien la lettre o et la cellule o et bien en violet, mais en plus la cellule B3 ce met aussi en violet et cela que pour la lettre o, car toutes les autres lettre aucun soucis.
Merci encore pour votre aide.
Bonjour,
Si vous reprenez votre fichier du post #4, et que vous regardez la feuille ( en la rendant visible par la propriétés Visible dans l'éditeur )
Alors vous verrez que la cellule B3 est violette.
Ce n'est pas la macro qui met cette cellule en violet, c'est tout simplement que cette cellule est déjà violette.
Essayez :
1- Sélectionnez "O"
2- Sur cette feuille mettez B3 en blanc
3- Revenez à Sommaire
4- Sélectionnez "O"
De quelle couleur est B3 ?
NB : Si vous voulez accéder à toutes les feuilles pour vérifier, utilisez cette macro :
VB:
Sub ToutVoir()
For Each F In Worksheets
Sheets(F.Name).Visible = True
Next F
End Sub
( ensuite il suffit de réappuyer sur une lettre pour tout remasquer )
Bonjour,
Si vous reprenez votre fichier du post #4, et que vous regardez la feuille ( en la rendant visible par la propriétés Visible dans l'éditeur ) Regarde la pièce jointe 1206155
Alors vous verrez que la cellule B3 est violette. Regarde la pièce jointe 1206156
Ce n'est pas la macro qui met cette cellule en violet, c'est tout simplement que cette cellule est déjà violette.
Essayez :
1- Sélectionnez "O"
2- Sur cette feuille mettez B3 en blanc
3- Revenez à Sommaire
4- Sélectionnez "O"
De quelle couleur est B3 ?
NB : Si vous voulez accéder à toutes les feuilles pour vérifier, utilisez cette macro :
VB:
Sub ToutVoir()
For Each F In Worksheets
Sheets(F.Name).Visible = True
Next F
End Sub
( ensuite il suffit de réappuyer sur une lettre pour tout remasquer )
Bonjour,
Si vous reprenez votre fichier du post #4, et que vous regardez la feuille ( en la rendant visible par la propriétés Visible dans l'éditeur ) Regarde la pièce jointe 1206155
Alors vous verrez que la cellule B3 est violette. Regarde la pièce jointe 1206156
Ce n'est pas la macro qui met cette cellule en violet, c'est tout simplement que cette cellule est déjà violette.
Essayez :
1- Sélectionnez "O"
2- Sur cette feuille mettez B3 en blanc
3- Revenez à Sommaire
4- Sélectionnez "O"
De quelle couleur est B3 ?
NB : Si vous voulez accéder à toutes les feuilles pour vérifier, utilisez cette macro :
VB:
Sub ToutVoir()
For Each F In Worksheets
Sheets(F.Name).Visible = True
Next F
End Sub
( ensuite il suffit de réappuyer sur une lettre pour tout remasquer )
Re, je pense que c'est une erreur car j'ai juste cliqué sur le rond à droite pour dire que la solution était la bonne, je suis désolé alors qu'est ce que j'ai bien pu faire ?