Réglage macro

Bonjour le forum.

Je sais que le titre n'est pas très explicite mais je ne sais comment le nommer car ma demande est assez spéciale.

Si quelqu'un a une idée de nom de sujet plus approprié par la suite je le modifierai!

Alors voici le problème:

J'ai une macro qui me permet de lier une cellule avec un texte a une feuille ayant le même texte en titre.

Par exemple si dans ma feuille 1 j'écris dans la cellule A1 "Test" et que j'ai une autre feuille qui se nomme "Test", en double cliquant sur la cellule A1 et bien cela me permettra d'aller directement sur ma feuille nommée "Test".

Voici le code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Sheets(Target.Value).Activate
End Sub

Très pratique je doit l'avouer mais il y a un problème que j'aimerai régler si c'est possible.

En effet, si je double clique sur une cellule qui n'a pas de liaison (donc en gros qui ne correspondrait a aucun nom de feuille du classeur) et bien cela m'ouvre une fenêtre de débogage:

sans titre

Le problème viens de la, j'ai beau appuyer sur n'importe quel bouton lorsque cela m'arrive et bien cela ferme une autre de mes macro qui n'est autre qu'un bouton qui permet de revenir en haut de page lorsque je clic dessus.

Le code du bouton:

Private Sub CommandButton1_Click()
Range("B1").Select
AppActivate ("Microsoft Excel") 'API Windows sous toute réserve !!
End Sub

Private Sub UserForm_Initialize()
SupprimerFermeture Me
End Sub

Public Sub SupprimerFermeture(USF As UserForm)
    Dim hWnd       As Long
    hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
                       "X", "D") & "Frame", USF.Caption)
    SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub

Je vous donne également mon fichier version "light" (avec seulement 2 feuilles) avec toutes les macros dedans si vous voulez faire des manipulation dessus:

10test-macros.xlsm (56.03 Ko)

En espérant que vous saurez me venir en aide! Amicalement, Zayx!

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On error resume next
Sheets(Target.Value).Activate
End Sub

D'accord pas plus compliqué que cela!

C'était vraiment expéditif mais merci de ta réponse plus que rapide!

Bonne fin de journée et encore MERCI!

Bonsoir et désolé mais je déterre la hache de guerre!

J'ai mis cette macro dans "Thisworkbook", je précise au cas ou je me soit trompé d'endroit mais logiquement c'est là étant donné que je dois affecter cette macro à toutes les feuilles de mon classeur. J'ai fais quelques test, lorsque je double clic sur un long texte qui ne correspond pas à un titre de feuille sur le sommaire (donc ma première feuille) et bien cela n'ouvre pas le débogage MAIS lorsque j'en fait de même sur une autre feuille cela me l'ouvre alors que pourtant ma macro pour atteindre une feuille via un mot qui correspond au titre d'une feuille y fonctionne...

D'où pourrait venir le problème?

Amicalement!

Bonjour,

si tu es dans thisworkbook la procédure évènementielle concernée est :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Accessoirement tu peux tester le nom de la feuille appelante avec sh.name si toutes ne sont pas concernées.

eric

J'ai remplacé l'ancienne ligne par celle que tu viens de me donner dans "thisworkbook". Le problème survient toujours lorsque je double clique dans une cellule qui ne correspond pas à un nom de feuille dans une autre feuille que la première...

Par contre je n'ai aucunement compris ce que tu voulais dire par cela:

eriiic a écrit :

Accessoirement tu peux tester le nom de la feuille appelante avec sh.name si toutes ne sont pas concernées.

Novice désolé

Je te donne un fichier test pour plus de facilité.

Bonjour,

Si tu le traites dans ThisWorkbook il faut supprimer le traitement dans les modules de feuille.

Et dans le module Tableau statistiques tu n'avais pas ajouté On error resume next, c'est sans doute sur cette feuille que tu avais l'erreur. Mais comme tu dois supprimer ces sub ...

Par contre je n'ai aucunement compris ce que tu voulais dire

Imagine que tu veuilles que ce ne soit actif que sur ces 2 feuilles. Tu fais la liste des feuilles concernées et tu testes si le nom de la feuille où a eu lieu le double-clic est dans la liste :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim listeF As String
    listf = ",Sommaire,Tableau statistiques,)"
    If InStr(listf, "," & Sh.Name & ",") > 0 Then
        Cancel = True
        On Error Resume Next
        Sheets(Target.Value).Activate
    End If
End Sub

Et ajoute le Cancel = True pour ne pas tomber en édition de formule

eric

D'accord j'ai compris mais étant donné que je veux le faire sur la totalité de mes feuilles et bien je suis dans l'obligation de supprimer ces lignes de codes sur l'ensemble de mon classeur... (j'ai copier mes feuilles avec le code déjà dessus...)

CEPENDANT, j'ai plus de 1.000 pages dans mon classeur...

N'y aurait-il pas une manipulation à faire pour la supprimer de toutes ces feuilles en une seules fois?

1000 feuilles ??? tu n'as peur de rien toi...

Si, mais je ne connais pas par coeur.

google : supprimer sub par vba

eric

J'ai pas trouvé ce que je veux sur la toile, ou alors peut être que c'est mal expliqué...

N'y aurait-il pas moyen de supprimer toutes les macros du classeur dans le pire des cas je peux sauvegarder mes macros a côté et les replacer une fois que mes feuilles sont vides. J'ai essayé plusieurs macro qui étaient censées supprimer l'intégralité de toute ça mais en vain...

Tu enregistres ton fichier en XLSX puis tu remets tes macros et tu réenregistres en XLSM ou XLS

pas bête...

C'est vrai c'est pas bête du tout j'y avais pas pensé!!! Je fais ça de suite merci

PS: j'ai un autre sujet en cours sur une macro de filtre/trie, donc si quelqu'un a des réponses je suis preneur

https://forum.excel-pratique.com/excel/macro-de-trie-t53222.html

Rechercher des sujets similaires à "reglage macro"