IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Double click Cell-Sheet [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut Double click Cell-Sheet
    Salut les Kracks,

    Je souhaiterai obtenir une macro me permettant en double-cliquant sur une cellule située entre B2:B22 de me renvoyer vers son onglet correspondant (même nom!):
    Pouvez-vous m'aider à obtenir se résultat en me précisant si il faut que je mette la macro dans "Thisworkbook" ou créer une macro par un double clique sur l'onglet de la feuille?
    Ci-dessous un code que j'ai trouvé sur le net et qui marche mais seulement pour la première cellule (peut-être à cause du "Intersect"?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
         
        Dim WSname As String
        Dim WScheck As Worksheet
        Dim WScheckname As String
         
        If Not Intersect(Target, Range("B2:B22")) Is Nothing Then
            WSname = Range("B" & Target.Row)'faudrait peut-être mettre ici Activecell car si je souhaite double-cliquer sur n'importe qu'elle cellule situé entre B2 et B22, il me faut aller à l'onglet correspondant ou le créer!
            On Error Resume Next
            Set WScheck = Sheets(WSname)
            If WScheck Is Nothing Then 'Doesn't exist so create it
                Sheets("Example").Copy Before:=Sheets(Worksheets.Count)
                ActiveSheet.Name = WSname
                ActiveSheet.Visible = True
                Set WScheck = Nothing
                On Error GoTo 0
            Else 'Does exist so activate it
                Sheets(WSname).Activate
                Set WScheck = Nothing
                On Error GoTo 0
            End If
        End If
    End Sub
    Merci d'avance pour votre aide.

    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Djromé et Bonne et heureuse année à tous
    Avant de tout refaire, pourquoi ne pas utiliser les liens hypertexte ?
    Ou la fonction Clic-droit sur le navigateur des onglet ?
    Sinon pour se déplacer jusqu'à l'onglet dont le nom et dans la plage B2:B22 => Dans le module ThisWorkBook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim F As Worksheet
    If Sh.Name <> "Feuil1" Then Exit Sub
    If Not (Intersect(Target, [B2:B22]) Is Nothing) Then
        Cancel = True
        For Each F In Sheets
            If F.Name = Target Then
                F.Activate
                Exit Sub
            End If
        Next F
    End If
    MsgBox "Pas de correspondance avec """ & Target & """"
    End Sub
    Tu arrives dans la feuille avec la visu qu'il y avait la dernière fois que tu l'as quittée. Si tu veux autre chose explique ton besoin.
    A+

  3. #3
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut à tous,

    Le code que tu as trouvé sur le net fonctionne très bien (pour autant qu'il soit placé dans le module de feuille adéquoi et pas thisworkbook).

    A+
    N'oubliez pas le si votre problème est solutionné.

  4. #4
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut Merci
    Salut les Kracks,

    Bonne et heureuse année 2010 à vous également.

    Effectivement, le code marche bien aujourd'hui!?
    Hier soir, je pouvais seulement créer et aller sur la feuille de la première intersection, c'est à dire B2? En double-cliquant sur les autres il ne se passait rien???
    Dans tous les cas, merci pour vos éclaircissements!

    n.b. Ce pourrait-il qu'il y ait des disfonctionnements avec .
    Car je l'ai enlevé cette fois-ci et tous roule...
    Celà m'était déjà arrivé auparavant, pouvez-vous me donner des explications à son sujet, car sur la plupart des tutoriaux ont nous indiquent de le mettre (par défaut, bien sûr!)

    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Djromé et Bonne et heureuse année à tous
    OPTION EXPLICIT : Obligation de déclarer toutes les variables (Menu Option pour que ça devienne par défaut). Si tu ne déclare pas une variable, Excel te rappelle à l'ordre.
    Danger : aucun, à mon avis. Il n'y a pas de contre-indication sauf en cas de flemmingite aigüe.
    Avantage : Permet d'éviter toutes erreurs de frappe dans le nom des variables.
    Il y aura une erreur sur la ligne de :
    CestMaVariableDeTravalDeLaTroisiemeFeuille = 5
    si on a mis
    Dim CestMaVariableDeTravailDeLaTroisiemeFeuille as integer
    CestMaVariableDeTravailDeLaTroisiemeFeuille = "AA"
    Déclechera aussi des remontrances de la part d'excel.

    Sans faire des noms de variables aussi long, quand tu recherche une erreur, le fait de déclarer tes variables dans le type te fait gagner du temps. Même si ce n'est pas une obligation pour le fonctionnement des macros, tu t'évites bien des problèmes en déclarant les variables :
    - Tu économises de la RAM. Variant=16 octets (valeur par défaut), les autres types lui étant inférieur. Mais avec les tailles de RAM actuelles...
    - Tu t'obliges à savoir ce que va recevoir ta variable (ce qui n'est pas une mauvaise chose, à mon sens)
    - Excel détecte toutes les erreurs de nom
    - Excel détecte les erreurs de type de données / type de variables.
    Mais si tu ne fais jamais d'erreur, tu n'a pas besoin de déclarer tes variables, puisque c'est plutôt un besoin de dépanneur que de codeur.
    A+

  6. #6
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut
    Salut les Kracks,

    Merci pour les explications Gorfael!
    Effectivement, j'avais déjà remarqué l'importance d'inclure "Option Explicit", mais je t'assure d'avoir essayé à maintes reprises, et le fait de le supprimer pour certaine macro m'a permis de les faire tourner sans problème? (il n'y a pas de message d'erreur si je laisse l'option explicit mais certaine macro ne font pas leurs travail correctement).

    Dans le cas ci-dessus, avec l'Option Explicit, il ne me créé seulement le 1er onglet correspondant à la première cellule (B2) et m'y emmène (dans l'onglet portant le même nom que la cellule B2 - ce que je lui demande de faire, d'ailleurs!) mais en cliquant sur les autres cellules définies jusqu'à B22, aucune réaction?

    Dans tous les cas, je t'assure depuis longtemps avoir recours par défaut à notre ami bienveilleur.

    Salutations
    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Djromé et le forum
    le fait de le supprimer pour certaine macro m'a permis de les faire tourner sans problème? (il n'y a pas de message d'erreur si je laisse l'option explicit mais certaine macro ne font pas leurs travail correctement).
    Ne connaissant pas exactement ce que fait Option Explicit, je ne peux en juger : pour moi, ce n'est qu'un complément de "l'analyseur de syntaxe" et je ne vois pas ce qu'il induirait dans le fonctionnement.
    mais en cliquant sur les autres cellules définies jusqu'à B22, aucune réaction?
    Quel code ? Les feuilles sont-elles visibles ? N'y a-t-il pas une autre macro qui bloque les événements ?
    Mets un point d'arrêt sur le titre de la macro et suit-la en pas-à-pas. arrive-telle jusqu'à l'activation de la nouvelle feuille ? que se passe-t-il ?
    A+

  8. #8
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut
    Bonsoir les Kracks,

    Effectivement j'ai essayé au pas à pas et là tout roule!?

    Mais j'ai remarqué que les "bug" venaient souvent le même jour de la création de la macro (celà me l'a fait plusieurs fois, d'où ma remarque...).

    De toute manière, un grand merci pour tes explications.

    Salutations.
    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Double click sheet hide
    Par Djromé dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/01/2010, 20h01
  2. [VB.NET] DataGrid et double click
    Par mic56 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 01/11/2006, 04h37
  3. Question sur double click
    Par cjacquel dans le forum MFC
    Réponses: 2
    Dernier message: 30/04/2005, 11h53
  4. [C#] [WinForms] Double click ListBox
    Par fxp17 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/04/2005, 14h58
  5. OnMouseUp et double click
    Par DBBB dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/12/2004, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo