Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Filtre avancés depuis/vers tableau structuré

    25 novembre 2020 à 11:15:32

    Bonjour,

    J'ai besoin de votre aide car je souhaite avoir plusieurs tableaux structurés qui vont chercher des lignes complètes de données depuis un tableau structuré Récapitulatif avec un critère.

    Je vous montre le code utilisé actuellement, il me pose problème car je retranscris sur une ligne donnée [A7:H7] et non sur un tableau donné [Tableau 1] :

    Private Sub Worksheet_Activate()
     Sheets("Base").[A1:N10000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[A1:A2], CopyToRange:=[A7:H7]
    End Sub

    Pouvez-vous m'aider à définir mon CopyToRange pour que les données soit envoyés dans le tableau structuré ?

    Le code peut être entièrement revu j'ai pas de soucis la dessus ^^

    Merci d'avance !!

    -
    Edité par Vince9944 25 novembre 2020 à 11:16:28

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2020 à 12:50:42

      si ton tableau est nommé Tableau1, tu peux directement mettre ce nom à la place de [A7:H7], mais tu auras la même présentation qu'actuellement.

      Il faut peut-être que tu passes par un tableau croisé dynamique qui se sert du tableau d'origine comme source de données et tu choisis les champs a utilisé, et c'est sur lui que tu fais le filtre

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2020 à 15:36:56

        Merci pour ta réponse.

        Avec quelle syntaxe je mets Tableau 1 ? Je n'y suis pas arriver.

        Merci d'avance.

        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2020 à 15:50:11

          simplement "Tableau1" (avec les guillemets) si c'est son nom; à la place de [A7:H7]
          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2020 à 16:16:16

            Non ca ne fonctionne pas il me remonte l'erreur 1004 : Le nom de champ est incorrect ou manquant dans la zone d'extraction.

            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2020 à 17:05:21

              Je le redis, il faut que tu ais donné un nom à ce tableau (cet ensemble de cellules), et tu peux alors l'utiliser dans le code. Pour vérifier si tu as donné un nom à ta zone, va dans l'onglet Formules > Gestionnaire de noms (la désignation peut changer selon la version d'Excel)
              • Partager sur Facebook
              • Partager sur Twitter
                26 novembre 2020 à 15:13:27

                Oui oui c'est fait depuis le début et ca ne fonctionne pas.

                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2020 à 18:44:07

                  les lignes et le tableau sont dans le même classeur ? dans la même feuille ?

                  le nom a quelle portée ? Feuille ou classeur ? (c'est la colonne "étendue" dans le gestionnaire de nom)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 novembre 2020 à 9:20:02

                    Bonjour,

                    L'étendue du nom de tableau est sur classeur.

                    Le code VBA est sur la feuille du Tableau1.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 novembre 2020 à 12:33:09

                      tu peux mettre le code qui ne marche pas ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 décembre 2020 à 15:12:55

                        Private Sub Worksheet_Activate()
                         Sheets("Base").[A1:N10000].AdvancedFilterAction:=xlFilterCopy,CriteriaRange:=[A1:A2],CopyToRange:="Tableau1"
                        End Sub
                        
                        Le voici.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 décembre 2020 à 16:35:31

                          Est-ce que la 1ère ligne de ton Tableau1 contient les noms des colonnes que tu veux récupérer de ton tableau [A1:N10000] ? si non, il faut la remplir
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 décembre 2020 à 23:20:23

                            Oui j'ai aussi essayé mais rien ne fonctionne.

                            J'arrive à bien le faire avec la commande filtre avancé intégrée à Excel mais impossible de faire fonctionner le code VBA.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 décembre 2020 à 10:00:23

                              essai dans un nouveau classeur excel (copie/colle les données dans le nouveau, sans oublier de nommer la plage)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 décembre 2020 à 15:25:23

                                Bonjour,

                                Le paramètre CopyToRange prend vraisemblablement une plage de cellules, or là tu lui envoies la chaîne de caractères "Tableau1". Il faut adapter la syntaxe pour envoyer la plage ayant pour nom "Tableau1" :

                                CopyToRange:=[Tableau1]

                                ou

                                CopyToRange:=Range("Tableau1")
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [VBA] Filtre avancés depuis/vers tableau structuré

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown