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 :

Filtrage base de donnée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Par défaut Filtrage base de donnée
    Bonjour à tous !

    Je suis nouveau sur ce forum, et je débute en VBA...

    J'ai une base de donnée dans une feuille Excel avec un certain nombre de colonnes.
    Je souhaite récupérer certaines informations de la base de donnée dans d'autre feuilles, en filtrant par des mots clés.
    Je voudrais pouvoir rajouter des lignes et des colonnes quand j'ai besoin dans cette base de donnée. Seulement, la zone où je colle la recherche dans la base de donnée est fixe. Donc quand je modifie la taille de la base de donnée, j'obtiens des erreurs.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'copie colle l'entête de la bdd
    Worksheets("suivi").Range("$4:$4").Copy
        Range("$17:$17").PasteSpecial
     
        Range("A1").Select
        Range("$21:$21").Clear
     
    'filtre l'affichage de la bdd 
    Worksheets("suivi_recep_bud_oyo").Rows("4:$65000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Rows( _
            "17:18"), CopyToRange:=Range("A21:Q21"), Unique:=False
        Range("A1").Select
    Existe-t-il une méthode pour résoudre ce problème ?
    Merci pour vos réponse!!!

    Charly.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour et bienvenu sur Dvp,

    Tout d'abord je te recommande de nommer (via Insertion>Nom>Définir) ta plage de donnée, ca t'évitera d'avoir des références de cellules partout dans le code ce qui simplifiera la lecture et la maintenance.

    Assure toi que cette plage respecte les contraintes suivantes:
    - Pas de lignes vides
    - Pas de colonnes vides
    - Entetes avec un format différent de celui des données (couleur, gras, encadrement..)

    De la même façon tu défini un nom pour ta plage de critere. Et voici ta procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Extraction()
        With Range("MesDonnees")
            'Filtrer
            .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("MesCriteres")
            'Copier
            .SpecialCells(xlCellTypeVisible).Copy
        End With
        'Coller
        Worksheets("NomFeuille").Range("A1").PasteSpecial xlPasteAll
    End Sub
    Il te reste à prévoir de supprimer le résultat de l'extraction précédente si nécessaire.

    Cordialement,

    Tirex28/

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Par défaut
    Merci beaucoup pour ta réponse !

    J'avais pensé à faire des plages de données, mais étant donné que la base de donnée bouge très souvent, je me suis dit que c'était moins pratique que de mettre des références de cellules.
    Est-il possible qu'une plage de donnée change ses coordonnées suivant ce qu'il y a dans la zone ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Est-il possible qu'une plage de donnée change ses coordonnées suivant ce qu'il y a dans la zone ?
    Peux tu préciser ta demande stp?

    Cordialement,

    Tirex28/

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Par défaut
    Bonjour!

    En fait, dans le code que j'ai donné dans mon premier poste,
    l'étendue de ma base de donnée est : Rows("4:$65000").

    Lorsque ma base de donnée comporte "Q" colonnes, elles seront collées grâce à : Range("A21:Q21").
    Mais lorsque j'ajoute une colonne dans ma base de donnée, il me met une erreur car il y a maintenant "R" colonnes. Il faut donc que je modifie l'endroit où les données seront collées par : Range("A21:R21").

    Voilà mon problème...

    Merci beaucoup pour ton aide !
    Cordialement,

    Charly997.

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    une possibilité assez simple :
    - comme vu tu nommes ta BDD avec les précautions indiquées.
    - tu t'aranges pour que la dernière colonne soit des données fixes ou non utilisées (voir vierges).
    - tu insères donc tes nouvelles colonnes en avant dernière colonne finalement à chaque fois.
    - du coup elle sont inclues dans ta plage nommée automatiquement qui évolue dynamiquement sans autre souci

    cordailement,

    Didier

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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