VBA message d'erreur

Bonjour,
j'ai créé un systeme de recherche et d'affichage de feuilles dans un classeur avec pour principe :
la valeur de la cell = la feuille a afficher ; jus que là c'est ok
si par erreur l'utilisateur clique hors selecton l; le message "d'erreur no9 " apparait
c'est a travers le fichier joint que je vous demande ce "legers desagrement" etant donné que je ne sius pas cale en vba
merci et à bientot
http://www.cijoint.fr/cjlink.php?file=cj200812/cijLvnPJQI.xls
Configuration: Windows XP
Internet Explorer 7.0

13 réponses

Résumé de la discussion

Un système Excel consiste à afficher une feuille selon la valeur d'une cellule, mais une sélection hors plage peut déclencher l'erreur No9 et bloquer la navigation. Plusieurs répondants recommandent des approches visuelles ou de navigation alternatives: utiliser des liens hypertextes visibles, des boutons décrits par les noms des feuilles, ou des sous-divisions pour limiter les manipulations. Des conseils techniques évoquent aussi une gestion par événement Worksheet_SelectionChange: vérifier Target.Value correspond à un nom de feuille existant et sortir si 0 ou vide, et proposer des validations pour éviter les saisies incorrectes. L'échange montre que l'option bouton offre un rendu visuel simple tout en pouvant préserver la protection des feuilles, et que plusieurs contributeurs proposent des démonstrations ou des exemples pratiques.

Bobot (l’IA à votre service)
  1. Salut,

    Dans cette ligne
    MsgBox "VOTRE SELECTION. " & Target.Value

    Supprimes

    "VOTRE SELECTION. " &

    Avec ça déjà ça marchera mieux

    MsgBox Target.Value
    If Target.Value = 0 Then
    Exit Sub
    Else
    Sheets(Target.Value).Select
    End If

    A+
    1. bonjour Mike 31
      je ne saisis pas bien le sens de ta reponse vu que la ligne de de code msg...."votre selction & est precedée d'une
      apostrophe ce qui la trans forme en commentaire donc innoperante
      merci d'avoir lu et repondu et donnez moi plus d'explications
    2. re mike
      j'ai adapté ta reponse et, c'est top j'ai simplement supprimé ta ligne msgbox target.value ce qui evite d'avoir à cliquer
      sur 2msg à la suite
      je met tout ca au propre et avec votre permission classement resolu
      a demain et encore merci
  2. Salut,

    Oui je l'ai vu, mais j'ai libéré la ligne. Si tu y tiens tu peux laisser comme cela. L'erreur venait que tu faisait référence à une valeur qui n'existait pas dans tes onglets soit le 0 ou vide donc aucun onglet était nommé 0 sinon ton code l'aurait ouvert et pour les cellules vides, aucun onglet ne peut exister s'il n'est pas nommé, d'ou si Target.value =0 sortir de la procédure, sinon ouvrir l'onglet référencé dans une cellule. Attention aux erreurs de saisies, je te conseille les listes de validation. Si tu veux un exemple je te retounerais ton fichier

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c As Range
    If Intersect(Range("D21:D31"), Target) Is Nothing Then Exit Sub
    If Intersect(Range("D21:D31"), Target) = "0" Then
    End If
    If Target.Value = 0 Then
    Exit Sub
    Else
    MsgBox "VOTRE SELECTION. " & Target.Value
    Sheets(Target.Value).Select
    End If
    End Sub
    A+
    1. bonjour Mike
      je vous remercie encore pour votre reponse rapide
      en effet je me suis attaché à limité au maximum les erreurs de saisie piuisque comme vous l'avez constaté ,l'utilisateur n'a qu'une lettre a saisir ;au cas ou il saisirait un nombre le message (changer de lettre) obtenu par f(x) si......dont la
      source est en ("j45") idem pour le cas ou la lettre saisie n'est pas "garnie" d'ou f(x) si(estna(rech ..... pour les cells (d21;d31) . l'ensemble sera protegé sauf les cells utiles ;et c'est là qu'il risque d'y avoir probleme : comment cliquer
      sur une cel protegée sans que....... sachant que si on la deveroiulle laf(x) qu'elle contient est ecrasable volontairement
      ou non
      je connais une macro evenementielle de recherche mais mon faible niveau vba ne me permet pas encore de coupler 2
      procedures si vous etes disposé à m'aider je peux vous envoyer ce code afin de l'adjoindre a celui depatouillé par vos soins
      en attendant je suis preneur de la solution a base de listes cette derniere m'ayant traversé l'esprit mais (RECH m'avait parue plus " confortable"
      bon apetit et,à bientot
  3. Salut,

    C'est après midi vat être chaud, mais renvois un fichier avec des annotations que je comprenne rapidement ce que tu veux avec tes macros.

    N'hésites pas à préciser je fais cette action et je souhaite tel résultat.

    Ensuite on peut inclure dans la macro la déprotection pendant l'exécution de la macro et la reprotection en fin de cycle avec ou sans mot de passe

    A+
    1. re
      je vais vous faire parvenir un topo complet dans le courant de l'apres midi je compte sur vous pour me faire savoir le moindre detail qui pourrait pretendre à confusion
      pour se detendre ; cet ouvrage n'a pas d'imperatif et; je dispose deja d'une solution satisfaisante mais si on peut faire mieux, allons-y
      merci et à+
    2. voila le topo j'espre etre clair, infos dans le code,si pas realisable on laisse tomber je vous fait confiance
      à bientot
    3. n'etant pas seul sur le poste dans la cohue j'avais oublié de coller le lien
      http://www.cijoint.fr/cjlink.php?file=cj200812/cijwKUHgDa.xls
      bonne soirée à bientot
  4. J'ai récupéré ton fichier, je te prépare un exemple dans la soirée avec listes de validations

    A+
    1. Salut,

      En attendant l'exemple avec liste de validation, essayes ce code en le collant à la place de l'ancien et on en reparle en fin de matinée avec des explications

      Option Explicit

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim c As Range
      Dim reponse

      If Intersect(Range("D21:D31"), Target) Is Nothing Then Exit Sub
      If Target.Value = 0 Then
      Exit Sub
      Else

      reponse = MsgBox("VOTRE SELECTION. " & Target.Value, vbYesNo + vbQuestion, "Titre")
      Select Case reponse
      Case vbNo
      Exit Sub
      Case vbYes
      Sheets(Target.Value).Select
      End Select 'fin du choix
      End If
      End Sub

      A+
      1. bonjour mike
        je viens seulement d'acceder avotre message j'ai essayé c'est parfait il me semble qu' en le couplant a ce que je vous
        envoie (car la nuit porte conseil )alors tot ce matin j'ai refait un topo sur la base de nos echanges ; il sagit d'une solution entierement gerée par vba qui après correction si c'est possible devrait etre plus que satisfaisante
        merci et à +
        http://www.cijoint.fr/cjlink.php?file=cj200812/cijw3v1LWx.xls
    2. Salut,

      récupères ton fichier avec le lien

      https://www.cjoint.com/?mrrMaACqVn

      A+
      1. re
        je vous remercie pour votre reponse , je viens de la tester c'est techniquement valable helas le public "agricole"auquel
        mon projet est destiné n'est pas feru des clics et des selections diverses . si bien que je m'attache a fournir du facile,du
        tout cuit; un peu comme sur les sites
        alors fort de cela soit je garde la 1ere version (f(x) RECH..... + VBA pour selection des feuilles ou la seconde mouture vba pour argumenter les 6cellues de choix + selection des feuilles dans ce cas la premiere partie du code sera
        a adapter aux 6 colonnes (voir lien de ce matin) votre avis? etes vous encore disposé à m'aider ?
        en attendant votre reponse , merci
      2. @GILOUOui je comprends mieux, donc du visuel.

        Pourquoi dans ce cas ne pas travailler avec des liens hypertextes tous les liens sont visibles, il suffit d'un clic sur le lien pour naviguer d'une page à l'autre et pas de code VBA

        ou encore une série de bouton avec le nom de la feuille dessus et un clic pour ouvrir la feuille choisie

        Dis moi et je te proposerai des exemples

        A+
      3. @Mike-31bonjour mike
        merci pour votre reponse et pour votre proposition . quant au projet j'ai deja utiliisé la solution hypertexte intra ou inter fichiers etant donné l'eventuelle multiciplité de feuilles je ne tiens pas a presenter une page menu tartinée de
        cells sous ce format quoique en creant des sous divisions .... pour la solution des commandbuttons je'ai aussi deja utilisée ; elle ressemble beaucoup a celle du lien hypertexte avec les macros en amont (enregistrées ou non)
        comme vous l'avez pertinement remarqué il me faut du visuel simple de surcroit donc un maximum de procedures
        evenementielles ("implantables") neamoins je suis preneurs des demos proposées ,je suppose qu'elles sont nettemement plus performantes que ce que j'ai bricolé
        a bientot
      4. @Mike-31bonjour Mike
        http://www.cijoint.fr/cjlink.php?file=cj200812/cij8OkHYsi.xls
        suite à votre post j'ai rebossé le sujet je suis parvenu a une solution vba à force de pugnacité et de deboguage
        car il n'est dit dans aucun tutoriel, sites specialises, qu'il etait possible de proceder ainsi , enfin cela marche
        il reste quelques details à regler ;je vous fait confiance pour m'aider à y parvenir
        n'hesitez pas a faire des commentaires ,j'approche de l'objectif (du visuel ,rien que du visuel à toute epreuve)
        à bientot et merci
    3. Salut,

      De mon coté, j'ai regardé ce qui était possible de faire, jettes un oeil sur le lien

      https://www.cjoint.com/?mtql0bXvkZ

      A+
      1. bravo mike
        je ne connaissait pas le coup du caption alors maintenenant on fait dans le resolu aucun risque de plantades
        en parlant de catalogue j' avais emis un sujet " une macro pour un catalogue" helas il est resté sans reponse
        j'ai du remettre le couvert avec un titre + racolleur en touts cas je vous remercie de m'avoir pris en charge ;je suis
        personnellement convaincu que ce mode de traitement de feuilles peut avoir des applictions diverses au regard des
        sujets frequement posés (chaque feuilles pouvant servir de base pour autre chose ) la photo n'etant qu'un point de
        depart dès lors merci et tenez moi au courant sur mon dernier envoi ne serait-ce qu'a titre pedagogique
        a+
    4. Dans ton dernier fichier, j'ai rajouter un ligne pour sortir de la procédure si I14 est vide et du coup les cellules D21 à D31 sont neutralisées dans le cas ou elles sont vides

      Dailleur je vais devoir en faire de même sur mon fichier dans le cas ou la cellule est vide

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim c As Range

      If Range("I14") = "" Then Exit Sub

      If Intersect(Range("D21:D31"), Target) Is Nothing Then Exit Sub
      If Intersect(Range("D21:D31"), Target) = "rien à afficher" Then

      MsgBox "clic sur objet affiché ou changer de lettre"
      End If
      If Target.Value = "rien à afficher" Then Exit Sub

      Sheets(Target.Value).Select
      End Sub

      A+
      1. re
        c'est jour de gala 1 sujet = 2solutions (rapides en +)
        juste une question : comment fait on pour deplacer et formater les commads buttons car ils me resistent ,j'aimerai faire une presentation personnalisee + la macro de fermture
        merci ;à bientot
    5. que veux tu faire comme personnalisation des boutons,

      je m'obsente, quelques instants

      A+
      1. j'aurai aimé les placer au milieu de la feuille ,qu'ils soient + longs avec une police qui flasche bref une presentation un
        peu similiaire à celle de "solution vba "
        quelle est donc cette race de boutons non maleables ? userform?
        moi aussi je dois partir , alors à demain peut etre et encore merci
    6. Salut,

      Lorsque tu auras terminé ton fichier, il faudra le mettre en lecture seule et coller le code ci-dessous dans la ThisWorkbook afin qu'il se ferme sans enregistrer et sans proposer l'enregistrement.

      Si tu le place déjà dans la ThisWorkbook il faudra ne pas oublier d'enregistrer tes modifs avant de fermer sinon il faudra recommencer

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      ThisWorkbook.Saved = True
      End Sub

      Pour la sécurité, les boutons que j'ai placé sur la feuille ne peuvent pas être effacés ou modifiés sur un simple clic.
      Sur un fichier, places tes boutons aux emplacements et dimensions que tu souhaites ainsi que leur aspect, je t'expliquerai comment faire.

      Sur le net on trouve des boutons fantaisies, qui clic droit et supprimer s'effacent, je te conseille de conserver les boutons du VBA que l'on peut agrémenter

      A+
      1. BONJOUR Mike
        je vous remercie de votre propositoin j' ai bricolé une maquette de presentatoin vite fait qui n'est pas fonctionelle
        sinon je vous renvaierrai gilou 4 xls ; les boutons vba me vont tres bien et c'est ok pour le code en fermeture
        je vous souhaite un bon week end ; a bientot
      2. j' avais encore oublié de coller le lien
        http://www.cijoint.fr/cjlink.php?file=cj200812/cijANwkpEH.xls
    7. Salut,

      jettes un oeil sur ce lien

      https://www.cjoint.com/?mun0zr6wG5

      A+
      1. bonjour Mike
        j'ai apprecie la version avec les index ; elle va m'etre fort utile pour un autre projet qui ne sera pas à usage collectif
        grace à ces trois versions ( dès que j'aurais bien percuté les syntaxes et les diverses commandes ) j'espere etre autonome c'est pour beaucoup grace à votre aide . En attendant la maquette definitive j 'ai potassé la version "boutons" à part quelques zones d'ombres sur la (race ) des boutons et comment les afficher dans le volet declaration , je me suis apercu qu' en allant dans 'mode creation ' l'on pouvait les traviller ; c'est deja pas mal ; maitenant grace aux infos du dernier lien je pige mieux car je ne connaissais pas , je vais me pencher là-dessus
        pour ce qui est de la version vba , j'ai carrement deplacé le tablleau afin que les colonnes (A,C ,E ,G ;;;; ) ne soient
        pas polluées par du texte de la ligne1 à 36 ne maitrisant pas les syntaxes adequates j'ai preferé (apres avoir eté emmer...) degager l'horizon ; comme cela = tranquille
        il me reste à vous fournir une maquette achevée en attendant je vous remercie par avance et à bientot
        ps bientot les congés le poste sera + dispo
    8. Salut,

      Avec les fêtes, ça va être chaud, mais si je trouve le temps je te ferais un petit montage pour expliquer le montage et les modifs des boutons en VBA.
      Le plus simple pour toi, si tu t'intéresses au VBA serai que tu te procures un bouquin en grande surface Excel 200? & VBA.

      Pour ton tableau, si tu veux garder ta feuille Menu propre, tu peux le mettre sur une feuille à part et avant de donner ton fichier, tu la masques
      Format/Feuille/Masquer

      A+
      1. re
        j'ai deja consulté pas mal de revues et de livres sur vba mais aucun n'est a la portee de non inities seule la partie enregistrement m'est exploitable quant au reste le lecteur prophane sombre dans un voca bulaire reservé (un peu comme dans l'aide ) fort de cela j'ai opté pour la solution de l'analyse de ce qu'on me propose et de la lecture des reponses du site au moins j'ai des exemples concrets pour me reperer (d'ou l'utilite de ccm)
        pour mon projet je vous envoie la version boutons (seule le police est a modifier ,j'ai essayé en vain)
        prenez votre temps , vous m'avez deja beaucoup appris ;c'est bientot Noel il n' y a pas d'imperatifs
        alors à bientot et bon Noel
        http://www.cijoint.fr/cjlink.php?file=cj200812/cijNVRQXfM.xls
        ps j'allais oublier peut_on faire en sorte que ""F12" soit . activate pour limiter les mauvaies maniips?
        encore merci
    9. Salut,

      Quelques petites astuces sur le lien ci dessous.

      Dès que tu l' auras réceptionné fais mois signe

      https://www.cjoint.com/?mwwVygLBwW

      A+
      1. bonjour Mike
        j''ai visé votre lien c'est impeccable et superieur à a une reponse à l'emporte piece ; l'avantage de la version bouton
        est que la feuille peut-etre protegée de manière classique pour ce qui est du formatage des boutons ,je vais m' y attleler ce soir ; il ne restera plus qu'a savoir la marche à suivre pour installer ce procedé de pilotage
        je vous remercie et je vous souhaite une bonne journée
      2. bonjour Mike
        je profite de mon passage pour vous saluer ; j' ai decortiqué vos solutions ,le metier commence à rentrer , j'espere pouvoir vous presenter sous peu un "devoir" en vous remerciant d'avoir" maché le boulot"
        bonnes fetes de fin d'années
      3. bonjour Mike
        voici une version considerée comme achevée à quelques details près j'ai mis à profit vos conseils ce qui m'a permis
        (toujours par deductoin) de faire du visuel
        a bientot et, bonne année
        http://www.cijoint.fr/cjlink.php?file=cj200812/cijfd0AZhJ.xls