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 :

Cellule activée pour lien par rapport a des criteres [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut Cellule activée pour lien par rapport a des criteres
    Bonsoir,

    J'ai un tableau avec 3 colonnes et moults lignes.
    Je voudrais savoir comment faire pour que les cellules contenant le mot matricule s'activent et que lorsque l'on clique dessus on ouvre une feuille avec un filtre dont le critere est égal a la premiere colonne de la même ligne.

    Un exemple sera peut etre plus parlant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Col A         Col B       Col C
    1025644	Téléphone  matricule
    2001630	verre	
    3562034  Poste       matricule
    Les cellules C2 et C4 contiennet matricule donc elles doivent s'activer et si on clique sur C2 sa ouvre une feuille avec comme critere A2 et pour C4 A4.

    Merci par avance

    Seb

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    tu n'es vraiment pas précis :
    Les cellules C2 et C4 contiennent matricule donc elles doivent s'activer et si on clique sur C2 sa ouvre une feuille avec comme critere A2 et pour C4 A4.
    "elles doivent s'activer" ça veut dire quoi ?
    "on clique sur C2 sa ouvre une feuille" quelle feuille ?
    "comme critere A2 et pour C4 A4" critère de quoi filtre, nom de la feuille...?
    si c'est un filtre, sur quelle colonne ?

    si les utilisateurs comprennent, j'espère qu'ils t'aideront, sinon pour moi, il faut que tu détailles un peu mieux.
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme casefayere, je crois qu'il manque quelques précisions et donc, il faut t'attendre à des répondes qui risque de partir tout azimuts mais bon, voici un premier jet, regarde si je suis loin du but.
    L'action est lancée sur l'évennement "SelectionChange" de ta feuille (qui est la principale, enfin je crois ?), en cliqant dans la colonne C et si la cellule n'est pas vide, la feuille à activer et filtrée porte le nom situé à gauche de la cellule en C (donc, le nom est en B), le filtrage est alors fait sur toute la zone utilisée de la feuille avec comme champ de recherche la colonne A.
    Le code ci-dessous est à mettre dans le module de la feuille d'où tu pars pour faire le filtrage (que j'appelle feuille principale ?) :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Dim Fe As Worksheet
        Dim LaPlage As Range
     
        'seulement sur la colonne C
        If Target.Column = 3 And Target <> "" Then
     
            'je suppose que le nom de la feuille est en colonne B
            'sur la ligne correspondante, à adapter ???
            Set Fe = Worksheets(Target.Offset(0, -1).Value)
     
            'définie la plage à filtrer (ici toute la feuille ???)
            Set LaPlage = Plage(Fe)
     
            'filtrage sur la colonne A avec la valeur de
            'la colonne A de la feuille principale
            LaPlage.AutoFilter 1, "=" & Target.Offset(0, -2)
     
            'affiche la feuille
            Fe.Select
     
        End If
     
    End Sub
     
    Function Plage(Fe As Worksheet) As Range
     
        'retourne toute la zone
        'utilisée dans la feuille
        With Fe
            Set Plage = .Range(.Cells(1, 1), _
                        .Cells(.Cells.Find("*", .[A1], -4123, , _
                        1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                        2, 2).Column))
        End With
     
    End Function
    Hervé.

  4. #4
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Merci Hervé,

    Citation Envoyé par Theze Voir le message
    'je suppose que le nom de la feuille est en colonne B
    'sur la ligne correspondante, à adapter ???
    Set Fe = Worksheets(Target.Offset(0, -1).Value)
    Le nom de la feuille a ouvrir est matricule

    Demain j'essaye (car aujourd'hui, j'ai pas le fichier).


    Bonne journée.

    Seb

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Alors, pour affecter la feuille à la variable avec le nom en colonne C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Fe = Worksheets(Target.Value)
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Fe = Worksheets(Target.Offset(0, -1).Value)
    Hervé.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, Hervé, sebing
    en reprenant le code à Hervé (memes variables, entre autres), j'aurai fait comme ça :

    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 Fe As Worksheet, filTre As String
    Dim LaPlage As Range, derlg As Long
    If Target.Column = 3 And UCase(Target) = "MATRICULE" Then
       filTre = Target.Offset(0, -2).Value
       Set Fe = Worksheets("matricule")
       With Fe
          .AutoFilterMode = False
          .Select
          derlg = .Range("A" & .Rows.Count).End(xlUp).Row
          Set LaPlage = .Range("A1:E" & derlg) 'admettons que tes données vont jusqu'à la colonne E
          LaPlage.AutoFilter field:=1, Criteria1:=filTre
       End With
    End If
     
    End Sub
    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Bonjour casefayere,

    c'est vrai que je n'ai pas tout expliqué

    Donc
    Citation Envoyé par casefayere Voir le message
    "elles doivent s'activer" ça veut dire quoi ?
    Les cellules de la colonnes C auront pour valeur soit matricule soit elles seront vide.
    Et je veux que seules les cellules contenant "matricule" puissent ouvrir une feuille lorsque l'on clique sur la cellule. Si on clique sur une cellule vide ça ne fait rien.

    Citation Envoyé par casefayere Voir le message
    "on clique sur C2 sa ouvre une feuille" quelle feuille ?
    "comme critere A2 et pour C4 A4" critère de quoi filtre, nom de la feuille...?
    si c'est un filtre, sur quelle colonne ?
    Donc ça ouvre la feuille matricule qui est dans le même classeur.
    Le filtre se fait sur la colonne A.
    La feuille matricule contient tous les matériels avec leur numéro de série (matricule).
    Lorsque l'on clique sur une cellule contenant matricule, on ouvre la feuille "matricule" avec comme critère de filtre la référence se trouvant dans la colonne A de la même ligne que la cellule cliquée.

    Ex: on clique sur C4(qui contient matricule), ça ouvre la feuille "matricule" et ça filtre la colonne A par rapport à la valeur de A4 (de la première feuille)

    J'espère avoir été assez précis pour que vous me veniez en aide

    Bonne journée

    Seb

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

Discussions similaires

  1. [Toutes versions] Remplir des cellules dans un fichier par rapport à un autre en VBA
    Par gregou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2015, 10h40
  2. Réponses: 3
    Dernier message: 01/06/2009, 18h21
  3. Activer un Select par rapport a la valeur d'un autre select.
    Par bullrot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/11/2008, 13h17
  4. Réponses: 4
    Dernier message: 17/03/2008, 11h03
  5. Nombre de mois différents par rapport a des dates
    Par mims1664 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/03/2007, 09h24

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