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 :

Offset sur des cellules visibles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Par défaut Offset sur des cellules visibles
    Hello l'équipe,

    Je suis en train de développer une macro qui va rechercher certaines informations dans une base de données qui contient un filtre.

    J'ai créé une boucle pour placer les données que j'ai besoin dans plusieurs variables afin de les réutiliser dans un autre tableau mis en forme.

    Mon problème est que si j'utilise la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateE = activecell.offset(1,0).value
    Ma variable stocke la valeur de la cellule qui est masquée par le filtre alors que j'aimerais prendre uniquement les valeurs visibles par le filtre. Existe-t-il une propriété avec l'offset pour réaliser cette tâche ?

    Merci pour vos réponses et bon après-midi.

    Caro

  2. #2
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Par défaut
    Citation Envoyé par formabox Voir le message
    Hello l'équipe,

    Je suis en train de développer une macro qui va rechercher certaines informations dans une base de données qui contient un filtre.

    J'ai créé une boucle pour placer les données que j'ai besoin dans plusieurs variables afin de les réutiliser dans un autre tableau mis en forme.

    Ma variable stocke la valeur de la cellule qui est masquée par le filtre
    alors que j'aimerais prendre uniquement les valeurs visibles par le filtre. Existe-t-il une propriété avec l'offset pour réaliser cette tâche ?
    Bonsoir,

    Voici une procédure commentée dont vous pourriez vous inspirer

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Sub RécupererDonnéesFiltrées()
     
        Dim LastRow As Long, I As Long
        Dim Donnees As Range
        Dim Code As String, Annee As String
     
     
        '===> Ecran >>> [ InActif ] --------------------------------------------
        Application.ScreenUpdating = False
     
        With Worksheets("Data")
     
            '* Initialiser les variables
            Code = [N9]
            Annee = [M9]
     
            '*** Plage avec une ligne d'entete afin que le filtre ne la prenne pas en compte
            Set Donnees = .Range(.Cells(2, 7), .Cells(.Rows.Count, 10).End(xlUp))
     
            '* Filtrage sur la colonne DE LA PLAGE DE DONNEES
            Donnees.AutoFilter 3, Code
            Donnees.AutoFilter 4, Annee
     
     
            '* Derniere ligne
            LastRow = .Cells(.Rows.Count, 7).End(xlUp).Row
     
             '* #1 - Copier les résultats
            .Range("G2:G" & LastRow).SpecialCells(xlCellTypeVisible).Copy .Range("L15")
     
            '* #2 - Données SANS entete colonne
            .Range("G3:G" & LastRow).SpecialCells(xlCellTypeVisible).Copy .Range("M15")
     
            Set Donnees = .Range(.Cells(3, 7), .Cells(.Rows.Count, 7).End(xlUp))
            Donnees.SpecialCells(xlCellTypeVisible).Copy [O15]
     
            '* #3 - Toutes les colonnes de la plage de données AVEC entete
            Set Donnees = .Range(.Cells(2, 7), .Cells(.Rows.Count, 10).End(xlUp))
            Donnees.SpecialCells(xlCellTypeVisible).Copy [L22]
     
            '* #4 - Toutes les colonnes de la plage de données SANS entete
            Set Donnees = .Range(.Cells(3, 7), .Cells(.Rows.Count, 10).End(xlUp))
            Donnees.SpecialCells(xlCellTypeVisible).Copy [L28]
     
            '* ôter le filtre
            Donnees.AutoFilter
     
        End With
     
           '* Libère mémoire ----------------------
        Set Donnees = Nothing
     
    End Sub
    __________________
    Cordialement
    Albert

Discussions similaires

  1. [XL-2007] Coller sur des cellules visibles
    Par Loki83 dans le forum Excel
    Réponses: 1
    Dernier message: 20/07/2010, 00h09
  2. [XL-2003] action sur des cellules non vides
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/05/2009, 15h33
  3. Calcul sur des cellules sur plusieurs feuilles
    Par vlksoft dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2009, 08h08
  4. mettre des commentaire sur des cellules
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2008, 16h03
  5. Forcer le calcul d'une fonction sur des cellules masquées
    Par AAZRO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 16h34

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