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

Excel Discussion :

[VBA-E] problème de lien


Sujet :

Excel

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut [VBA-E] problème de lien
    Bonjour,
    voici mon problème:

    j'ai 3 feuilles de calculs dans un même fichier excel. Sur la première j'ai une liste d'entreprise, sur la deuxième feuille, j'ai la même liste d'entreprise, mais avec des détails et sur la troisième feuille, j'ai encore cette liste d'entreprises avec encore plus de détails.
    Je veux donc que quand on clik sur un nom d'entreprise sur la première feuille, on voit les détails sur la deuxième feuille. Puis quand on clik sur la même entreprise de la deuxième feuille, on voit le détails de la troisième feuille.
    Le hick c qu'avec les macros que j'utilise:

    Pour la feuil1:

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim c
    Dim LeNom As String
     
    If Target.Column = 2 Then 
        LeNom = Target
            With Worksheets("Feuil2").Range("B:B")              
            Set c = .Find(LeNom, LookIn:=xlValues)
                If Not c Is Nothing Then
                    Worksheets("Feuil2").Select
                    Worksheets("Feuil2").Cells(c.Row, c.Column).Select
                End If
            End With
        End If
     
    End Sub
    et pour la feuil2

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c
    Dim LeNom As String
     
    If Target.Column = 2 Then 
        LeNom = Target
            With Worksheets("Feuil3").Range("B:B")  
                Set c = .Find(LeNom, LookIn:=xlValues)
                If Not c Is Nothing Then
                    Worksheets("Feuil3").Select
                    Worksheets("Feuil3").Cells(c.Row, c.Column).Select
                End If
            End With
        End If
     
    End Sub
    donc avec ces macros, quand je click sur une entreprise de la feuille1, ca m'affiche automatiquement les détails de la feuille3, même si cette entreprise se trouve dans la feuil2.

    Voilà, merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Bah meme si le code est au bon endroit, si lorsque tu fais ton "Select" dans le Feuil2, tu changes de cellule, alors cela appelle le SelectionChange de la Feuil2 qui lui va chercher dans la Feuil3... Ca fait un effet cascade...
    Soit tu changes d'evenement, genre BeforeDblClick, soit dans la procedure sur la Feuil2 tu detectes si la procedure dans la Feuil1 a ete lancee...
    exemple :
    Dans un module standard :Dans le code de la Feuil1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        bool = True
        Feuil2.Activate
        Feuil2.Cells(10, 10).Select
        bool = False
    End Sub
    Dans le code la Feuil2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If bool = False Then
            Feuil3.Activate
        End If
    End Sub

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Plus "propre" encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Application.EnableEvents = False
        Feuil2.Activate
        Feuil2.Cells(10, 10).Select
        Application.EnableEvents = True
    End Sub
    Pas besoin de changer le code de la feuille 2.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello Alain,
    Super, ta solution. J'ajouterais seulement un DoEvents
    Dans Feuil1 :
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim c
    Dim LeNom As String
     
    If Target.Column = 1 Then
        LeNom = Target
            With Worksheets("Feuil2").Range("A:A")
            Set c = .Find(LeNom, LookIn:=xlValues)
                If Not c Is Nothing Then
                    Application.EnableEvents = False
                    Worksheets("Feuil2").Select
                    Worksheets("Feuil2").Cells(c.Row, c.Column).Select
                    DoEvents
                    Application.EnableEvents = True
                End If
            End With
        End If 
    End Sub
    Sinon, il arrive qu'on aille tout droit dans feuil3 -> pas systématique (...)
    Rien à changer dans feuil2 par rapport au tout premier code proposé.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut Résolu
    Merci à tous pour votre aide,

    vous êtes des chefs

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

Discussions similaires

  1. [VBA]Mise à jour de lien par vba problème
    Par srame dans le forum Général VBA
    Réponses: 19
    Dernier message: 20/04/2007, 15h54
  2. [VBA-Excel] Problème de syntaxe pour lien hypertexte
    Par matt8-5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2007, 11h23
  3. [VBA E] Problème de lien entre textbox et cellule
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/06/2006, 08h49
  4. [VBA-E] Problème d'adresse de liens hypertext
    Par jgfa9 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/12/2005, 11h11
  5. Problème de lien
    Par D-D dans le forum ASP
    Réponses: 10
    Dernier message: 03/06/2004, 17h02

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