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 :

Adresse des cellules sélectionnées dans le résultat d'un filtre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Adresse des cellules sélectionnées dans le résultat d'un filtre
    Bonjour à tous

    Contexte : une liste de valeurs dans les cellules A1 à A4.
    Un filtre sur cette liste affiche les cellules A1, A2 et A4
    Je sélectionne A2 et A4 (cliqué glissé) A3 n'est pas visible.

    Objectif : afficher dans la cellule B1 (avec du code VBA) les adresses des cellules filtrées et sélectionnées soit A2;A4 ou $A$2; $A$4 et non pas A2:A4 ou $A$2: $A$4

    Un grand merci à la personne qui peut m'apporter la solution.

    Philoflore

  2. #2
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [B1] = Join(Split(Range("A1:A4").SpecialCells(xlCellTypeVisible).Address, ":"), ";")
    Bonne journée

  3. #3
    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
    Par défaut
    Si tu es certain d'avoir la cellule "A1", tu peux utiliser CurrentRegion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address
    Ce qui évite d'avoir à préciser le N° de colonne.

    (bonjour Abed_H, je ne suis pas certain que ton code donne la bonne plage. Tu peux vérifier ? )

  4. #4
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    (bonjour Abed_H, je ne suis pas certain que ton code donne la bonne plage. Tu peux vérifier ? )
    Bonjour ouskel'n'or

    j'ai vérifier le code pour la plage de A1 à A19 lignes visible et j'ai constaté qu'il renvoie bien l'adresse des cellules filtrées et voici le résultat $A$1,$A$5,$A$11,$A$13,$A$16;$A$17,$A$19 ce qu'il a voulais avoir philoflore.


    Bonne journée

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Complément d'info
    Juste une petite précision au sujet de cette question :
    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [B1] = Join(Split(Range("A1:A4").SpecialCells(xlCellTypeVisible).Address, ":"), ";")
    renvoie systèmatiquement toutes les cellules filtrées. Peut-on avoir uniquement le résultat pour les cellules sélectionnées avec la souris dans cette liste filtrée.

    Ex. dans le résultat du filtre s'affiche A2 et A4. Je sélectionne uniquement A4 car c'est cette valeur qui m'interesse. Résultat attendu du code VBA : dans la cellule B1 s'affiche A4 ou $A$4

    Un grand merci

  6. #6
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Citation Envoyé par philoflore Voir le message
    Juste une petite précision au sujet de cette question :

    Ex. dans le résultat du filtre s'affiche A2 et A4. Je sélectionne uniquement A4 car c'est cette valeur qui m'interesse. Résultat attendu du code VBA : dans la cellule B1 s'affiche A4 ou $A$4

    Un grand merci
    insert ce code dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Intersect(Range("A1:A100"), Target) Is Nothing Then Exit Sub
        [B1] = Target.Address
    End Sub

  7. #7
    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
    Par défaut
    Pour A1 à A19, c'est ok mais pour "A8:H80" (ce que tu avais mis) je n'ai pas eu les bonnes "plages" dans l'adresse récupérée
    (juste pour info )

  8. #8
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    c'est vrai c'est une erreur de ma part mais j'ai corrigé.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Complément d'info
    Merci pour ce début de réponse

    Si j'ajoute ce code en début de feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Intersect(Range("A6:A100"), Target) Is Nothing Then Exit Sub
        [B1] = Target.Address
    End Sub
    dans la cellule B1 s'affiche des adresses de cellules juxtaposées ?

    Ex. le résultat du filtre affiche A6, A7 A9, A10, A13. Je sélectionne A7:A9 (cliqué glissé) et A13 avec la touche Ctrl.

    Résultat : dans la cellule B1 S'affiche A6;A7,A9;A10,A13. Résultat attendu (objectif) A7;A9;A13.

    Je me demande s'il existe une méthode ou propriété (type address..) pour afficher l'adresse des cellules sélectionnée visibles ??? dans ce cas je pourrai l'utitlisée, qu'il y'ait un filtre ou quand les cellules sont masquées.

    Si vous avez une idée

    Merci à nouveau

  10. #10
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Range("A6:A100"), Target) Is Nothing Then Exit Sub
    [B1] = Join(Split(Selection.Address, ":"), ";")
    End Sub

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

Discussions similaires

  1. [Debutant] Recupération des coordonnées des cellules sélectionnées dans un DataGrid
    Par yal001 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 27/08/2009, 10h54
  2. Inscrit l'adresse d'une cellule sélectionnée dans une autre cellule
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2008, 22h26
  3. Réponses: 3
    Dernier message: 18/04/2008, 17h20
  4. [VBA-E2003] Colorier des cellule sélectionnée
    Par 973thom dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 26/04/2006, 10h19
  5. remplir des cellules fixes dans une colone
    Par tahri_1989 dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/01/2006, 16h06

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