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 :

FILTRE PERSONALISE VBA "COMMENCE PAR"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut FILTRE PERSONALISE VBA "COMMENCE PAR"
    Bonjour à tous !

    travaillant actuellement sur une macro de traitement de données, je me trouve en face d'un problème que je ne sais résoudre.
    En gros, j'ai une table de données constituée d'une première ligne avec les titres de colonnes puis envion 5000 lignes d'informations.
    Chaque ligne possède une information du type numéro de dossier. Je souhaite filtrer cettre table en selectionnant les entrées pour lesquelles le numero de dossier commence par 18463 par exemple. (le numero de dossier serait par exemple 184630000120)
    En cherchant un peu sur internet et notamment sur co forum j'ai trouvé le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("table").Activate
    Range("A2").CurrentRegion.AutoFilter Field:=3, Criteria1:="=" & Range("A1").Value & "*", Operator:=xlAnd
    la table commence à la deuxième ligne, doù le range("A2") et en A1 j'ai ma valeur de filtre (18463 dans mon exemple).
    Le problème c'est que la selection ne se fait pas, après avoir fait quelques tests je me suis rendu compte que ça marchait pour une colonne de texte et que donc le probleme viendrait du fait qu'il s'agit de nombres et non de texte.
    J'ai essayé de modifier les formats de cellule en format "nombre" mais sans succès...

    Avez-vous des idées pour remédier à ce problème ?


    Merci

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    SAlut,
    le fait de changer le format des cellules ne change pas directement le contenu des cellules, il faut repasser dessus en quelque sorte.

    tu peux utiliser une macro genre (ou manuellement utiliser la fonction données/convertir)

    dans cette macro tu as les 2 façon de faire

    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
    Sub texte()
        Application.ScreenUpdating = False
        Calcul = Application.Calculation
        Application.Calculation = xlCalculationManual
        Dim c As Range, MonText As String
        If Selection.Cells.Count > 1 Then
            Set MaSelection = Intersect(Selection.SpecialCells(xlCellTypeVisible), Range("A1", ActiveSheet.UsedRange))
        Else
            Set MaSelection = Selection
        End If
        If MaSelection.Areas.Count = 1 And MaSelection.Columns.Count = 1 Then
            MaSelection.TextToColumns Destination:=MaSelection, DataType:=xlDelimited, _
                                      TextQualifier:=xlSingleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                                      Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                                                                                                :=Array(1, 2), TrailingMinusNumbers:=True
        Else
            For Each c In MaSelection
                If Not c.HasFormula Then
                    c.NumberFormat = "@"
                    If Left(c.FormulaR1C1, 1) = "'" Then
                        MonText = Right(c.FormulaR1C1, Len(c.FormulaR1C1) - 1)
                    Else: MonText = c.FormulaR1C1
                    End If
     
                    c.Value = MonText
                End If
                MonText = ""
            Next c
        End If
        Application.Calculation = Calcul
    End Sub


    En laissant tes données dans leur format numérique
    184630000120
    Commence par 18463 peux s'écrire between 184630000000 and 184640000000
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    c'est tout à fait normal pour des valeurs numériques !

    Suffit de borner entre la valeur minimale et la valeur maximale …

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut
    Ahh ok

    oui c'est logique en fait...

    bon le plus rapide va être d'encadrer en effet, meme si ça va m'obliger à revoir un peu mon truc.

    Merci pour votre réactivité et pour votre aide !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/03/2014, 13h06
  2. Filtre VBA, problemme avec double quote
    Par choubak dans le forum VBA Access
    Réponses: 7
    Dernier message: 29/06/2007, 09h31
  3. [VBA-E]autofilter criteria "commence par"
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 16/03/2007, 10h07

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