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 :

Selection données filtre en fonction d'une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut Selection données filtre en fonction d'une colonne
    Bonjour bonjour !
    Je fais encore appel à vous parce que vous êtes les meilleurs et qu'un nouveau problème se présente à moi !

    J'ai un tableau avec plusieurs filtres de données, et j'aimerais que dans ma macro, je sélectionne certaines données d'une colonne avec un filtre mais pas en fonction du numéro de la colonne mais en fonction du nom de cette colonne.

    Le code pour sélectionner mes données en fonction du numéro de la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub filtre()
    ' filtre Macro
     
        ActiveSheet.Range("$A$1:$AP$9087").AutoFilter Field:=30, Criteria1:=Array( _
            "DE-VA POLE AMERIQUES", "DE-VA POLE FRANCE", "DE-VA POLE ROUMANIE", _
            "DE-VB POLE AMERIQUES", "DE-VB POLE COREE", "DE-VB POLE FRANCE", _
            "DE-VB POLE ROUMANIE", "DE-VD POLE AMERIQUES", "DE-VD POLE COREE", _
            "DE-VD POLE FRANCE", "DE-VD POLE ROUMANIE", "DE-VE POLE AMERIQUES", _
            "DE-VE POLE COREE", "DE-VE POLE FRANCE", "DE-VE POLE ROUMANIE"), Operator:= _
            xlFilterValues
    End Sub
    Auriez-vous une petite idée pour faire ça en fonction du nom de la colonne ? (Le nom de la colonne c'est "PoleTrait")


  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une piste ici

    Cordialement.

  3. #3
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Merci de ta réponse rapide.
    Mais ton code sert à repérer la présence d'une cellule, et j'ai ce code là moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Set Cel = Cells.Find(what:="Fonction*") '(Où fonction est le nom de ma cellule)
      If Not Cel Is Nothing Then
        Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlUp).Row).Select
      Else
        MsgBox "Pas trouvé le nom "
        Exit Sub
      End If
    Mais je voudrais, à travers le filtre, cocher des données en fonction du nom de ma cellule, et dans ton code il n'y a rien qui me mette sur cette piste..
    (Ou alors j'ai pas compris ton code ^^)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par backx3 Voir le message
    (Ou alors j'ai pas compris ton code ^^)
    Si le principe est de trouver la colonne s'appelant "PoleTrait" dans la ligne 1 (ligne de titre), le code ci-dessous fonctionne.

    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
    55
    56
    57
    58
    59
    Option Explicit
     
    Public DetectionColonnes As String
     
    Sub Filtre()
     
    Dim LigneDeTitre As Long
    Dim ColPoleTrait As Integer
     
        With ActiveSheet
     
             LigneDeTitre = 1
             DetectionColonnes = "Absence colonnes :" & Chr(10)
             ColPoleTrait = ColonneFeuille(ActiveSheet, LigneDeTitre, "PoleTrait")
     
             If DetectionColonnes = "Absence colonnes :" & Chr(10) Then
                .Range("$A$1:$AP$9087").AutoFilter Field:=ColPoleTrait, Criteria1:=Array( _
                    "DE-VA POLE AMERIQUES", "DE-VA POLE FRANCE", "DE-VA POLE ROUMANIE", _
                    "DE-VB POLE AMERIQUES", "DE-VB POLE COREE", "DE-VB POLE FRANCE", _
                    "DE-VB POLE ROUMANIE", "DE-VD POLE AMERIQUES", "DE-VD POLE COREE", _
                    "DE-VD POLE FRANCE", "DE-VD POLE ROUMANIE", "DE-VE POLE AMERIQUES", _
                    "DE-VE POLE COREE", "DE-VE POLE FRANCE", "DE-VE POLE ROUMANIE"), Operator:= _
                    xlFilterValues
            Else
                MsgBox DetectionColonnes, vbCritical
            End If
        End With
     
    End Sub
     
     
     
    Function ColonneFeuille(ByVal FeuilleTitre As Worksheet, ByVal LigneTitre As Long, ByVal TitreRecherche As String) As Long
     
    Dim NbColonnes As Long
    Dim Cellule As Range
    Dim Aire As Range
     
        With FeuilleTitre
     
             ColonneFeuille = 0
             NbColonnes = .Cells(LigneTitre, .Columns.Count).End(xlToLeft).Column
             Set Aire = .Range(.Cells(LigneTitre, 1), .Cells(LigneTitre, NbColonnes))
     
             For Each Cellule In Aire
                 Select Case Mid(Cellule.Value, 1, Len(TitreRecherche))
                        Case TitreRecherche
                             ColonneFeuille = Cellule.Column
                             Exit For
                 End Select
             Next
     
             If ColonneFeuille = 0 Then DetectionColonnes = DetectionColonnes & Chr(10) & TitreRecherche
     
             Set Aire = Nothing
     
        End With
     
    End Function

    Cordialement.

  5. #5
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Ton code fonctionne mais j'aimerais essayer de l'insérer dans ma macro et donc le "Public DetectionColonnes As String" me dérange car je ne peux pas le mettre dans mon sub.
    Aurais-tu une alternative pour que je puisse le mettre dans ma macro stp ? (Désolé je m'y connais pas énormément)
    C'est la première fois que je vois un "Public" comme déclaration ^^

  6. #6
    Invité
    Invité(e)
    Par défaut
    De quelle macro s'agit-il ?

    Quant à Public DetectionColonnes As String, il n'y a pas besoin d'y toucher, cette déclaration doit être en tête de module. La déclaration est là parce que cette variable est utilisée dans les deux procédures. J'aurais pu remplacer Public par Private tant que les deux procédures sont dans le même module.

    Cordialement.
    Dernière modification par AlainTech ; 07/03/2015 à 14h33. Motif: Suppression de la citation inutile

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2010, 09h07
  2. Supprimer lignes en fonction d'une colonne
    Par eillon dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/12/2007, 11h15
  3. [MySQL] Trier les résultats en fonction d'une colonne ordre
    Par eclipse012 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/01/2007, 13h59
  4. [formulaire]appliquer un filtre en fonction d'une liste
    Par hansaplast dans le forum Access
    Réponses: 1
    Dernier message: 24/07/2006, 12h31
  5. Données contenant un apostrophe dans une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/09/2005, 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