Evenement Double clic

Résolu/Fermé
Alice - Modifié par Whismeril le 13/10/2015 à 22:48
 Alice - 14 oct. 2015 à 16:55
Bonjour,

Je crée un fichier comportant plusieurs pages, certaines récapitulatifs ou d'explications ("Liste", "Menu"...), et d'autres spécifiques à des clients ("Martin", "Lefevre"...)

J'aimerai que si on double clic sur une cellule contenant le nom d'un client, on arrive sur l'onglet correspondant.
Mais si jamais on double clic sur une cellule qui ne contient rien ou qui ne correspond pas à un nom de client, un message s'affiche en donnant la procédure à faire (comme inscrire le nom du client et non le prénom par exemple.Mais pour le texte, je m'en occupe).

Dans le cas où ça amène bien à un onglet, j'ai réussi en utilisant le code
Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
Dim nom_onglet As String
nom_onglet = ActiveCell.Value

Sheets(nom_onglet).Select


End Sub

Mais comment faire dans le cas où la cellule ne correspond pas ?
(Je ne suis pas la seule destinée à utiliser le fichier, mes collègues ne sauront pas le débuguer)

Merci pour votre aide


EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
14 oct. 2015 à 07:58
Bonjour,

comme ceci

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim nom_onglet As String
If Not Intersect(Target, Range("A:A")) Is Nothing Then 'adapter la colonne
nom_onglet = Target.Value
Sheets(nom_onglet).Select
Else
MsgBox "ton message"
End If
End Sub

0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
14 oct. 2015 à 08:00
J'ai oublié que tu voulais le double clic, tu changes:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

par

Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
14 oct. 2015 à 08:44
Salut cs_Le Pivert,

En complément de ta réponse, je penses qu'il faut, toutefois, vérifier si le nom contenu dans la cellule cliquée est bien le nom d'une feuille.
Sinon, ça va planter...

Donc, en reprenant ton code, cela pourrait donner :

Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
Dim nom_onglet As String
   'si l'utilisateur double-clic dans la ,bonne colonne (ici colonne A)
   If Not Intersect(Target, Range("A:A")) Is Nothing Then 'adapter la colonne
      If Feuil_Exist(ThisWorkbook.Name, Target.Value) Then
         'ici le code à exécuter si le nom présent dans la cellule est bien un nom de feuille
         nom_onglet = Target.Value
         Sheets(nom_onglet).Select
      Else
         'ici le message à afficher s'il ne s'agit pas d'un nom de feuille
         MsgBox "ton message"
      End If
   'si clic au mauvais endroit on ne fait rien
   End If
End Sub

'Test si la feuille existe déjà
Function Feuil_Exist(strWbk As String, strWsh As String) As Boolean
'Gestionnaire d'erreur
On Error Resume Next
    '"Test"
    Feuil_Exist = (Workbooks(strWbk).Sheets(strWsh).Name = strWsh)
End Function
0
Après une erreur d'écriture, cela fonctionne correctement.
Merci!
0