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

Excel Discussion :

Effacer certaines colonnes d'un tableau [XL-365]


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut Effacer certaines colonnes d'un tableau
    Bien le bonjour à toutes et tous.

    J'aimerai via une macro effacer certaines colonnes d'un tableau T_2
    Il comporte 13 colonnes et je ne veux effacer que les colonnes de 3 à 13
    En faisant l'enregistrement de macro, et en la remaniant j'ai obtenu ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("T_2[[#All],[Groupe 1]:[Groupe 10]]").ClearContents
    Ca fonctionne très bien .

    Maintenant j'aimerai que ce soit défini à partir de la colonne [Groupe 1] sur x colonnes (x étant un nombre que je vais chercher sur une autre feuille) et pas que jusqu'à le colonne [Groupe 10].

    Voili merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      With ActiveSheet.ListObjects("T_2")
        .ListColumns("Groupe 1").Range.Resize(, [Feuil3!A1].Value).ClearContents
      End With
    Avec le nombre de colonnes en A1, Feuille "Feuil3".

    (efface aussi les entêtes, comme dans ton exemple).
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Salut Daniel déjà merci pour la réponse.

    En revanche étant un débutant en herbes j'ai mis cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects("T_2").ListColumns("Groupe 1").Range.Resize(, [data!F11].Value).ClearContents
    il se passe rien ...
    data étant le nom de la feuille où se trouve référencé le nombre qui m'intéresse

    Petite question annexe pour manier des données dans un tableau c'est bien entre [] que l'on nomme la ligne ou colonne dans mon cas?

    y a t il une autre manière de la spécifier cette colonne?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Je viens de tester ton code et il fait bien le boulot. J'ai mis 3 en Data!F11; et toi ? Pour plus de sureté, remplace "ActiveSheet" par le nom de la feuille. Quant à la syntaxe, tu peux utiliser celle donnée par l'enregistreur de macros, mais celle que j'utilise est la syntaxe VBA qui est plus souple.
    Avant macro :
    Nom : Annotation 2019-12-28 135319.png
Affichages : 1029
Taille : 6,8 Ko

    Après exécution :
    Nom : Annotation 2019-12-28 135351.png
Affichages : 1016
Taille : 7,6 Ko
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    En fait oui cela fonctionne (encore un probleme interface chaise bureau) ... désolé.

  6. #6
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Donc je résume jai 10 colonnes à effacer ok je passe mon tableau à 11 colonnes la macro efface bien les 11 colonnes.
    Maintenant quand je repasse à 10 colonnes cela m'efface quand même ce qu'il y a dans la colonne suivante.
    En soit ce n'est pas grave mais quand même ...

    Et pour finir étant officellement un cass pieds qui aime comprendre ce qu 'il fait...
    je n'ai pas tout saisi sur ta ligne de code. y a t il un moyen plus "lisible" de le faire ?

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Personnellement, j'utilise simplement l'appel à une fonction qui contient une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function RemoveListColumns(oList As ListObject, LabelNames As Variant)
      ' Arguments
      '  oList      ' Objet table
      '  LabelNames ' Variable tableau contenant les étiquettes de colonnes à détruire
      Dim Elem As Integer
      For Elem = 0 To UBound(LabelNames)
        On Error Resume Next
        oList.ListColumns(LabelNames(Elem)).Delete
        On Error GoTo 0
      Next
    End Function
    Que l'on invoque comme ceci (dans l'exemple shtDb est le CodeName de la feuille)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub TestRemoveListColumns()
      Dim LabelToRemove()
      Dim objTable As ListObject
      Set objTable = shtDb.ListObjects(1)
      LabelToRemove = Array("Age", "ENFANTS", "LOGEMENT")
      '
      Application.ScreenUpdating = False
      RemoveListColumns objTable, LabelToRemove ' Supprime les colonnes
      objTable.Range.Columns.AutoFit            ' Réadapte la largeur des colonnes
      '
      Set objTable = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Citation Envoyé par pokypok Voir le message
    Donc je résume jai 10 colonnes à effacer ok je passe mon tableau à 11 colonnes la macro efface bien les 11 colonnes.
    Maintenant quand je repasse à 10 colonnes cela m'efface quand même ce qu'il y a dans la colonne suivante.
    En soit ce n'est pas grave mais quand même ...

    Et pour finir étant officellement un cass pieds qui aime comprendre ce qu 'il fait...
    je n'ai pas tout saisi sur ta ligne de code. y a t il un moyen plus "lisible" de le faire ?
    Pour éviter de dépasser les limites du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim Var As Long
      With ActiveSheet.ListObjects("T_2")
        Var = Application.Min(.ListColumns.Count, [data!F11].Value)
        .ListColumns("Groupe 1").DataBodyRange.Resize(, Var).ClearContents
      End With
    Pour comprendre : "ListObject" représente un tableau; "Listcolumn" représente une colonne de ce tableau. L'instruction "Resize" redimensionne l'object Range.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et pour finir étant officellement un cass pieds qui aime comprendre ce qu 'il fait...
    Je te conseille la lecture de ce tutoriel de Pierre Fauconnier titré Excel: Les tables de données en VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Daniel et Philippe merci beaucoup.

    Il est vrai que j'ai des notions mais qu'il me manque les bases et bon nombres des explications sont souvent réellement hors de portée pour moi car je n'ai que des bribes.

    Le dernier lien sur le tuto va bien m'aider.

    Très bonne fin de journée à vous et encore merci.

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai vu en relisant les fils de cette discussion que finalement c'est le contenu des colonnes et non la totalité de celle-ci qu'il fallait effacer.
    J'ai donc modifier la fonction en y a joutant un argument facultatif nommé IsDataOnly qui permet si sa valeur est à True de n'effacer que le contenu False ou omis efface la colonne entière.
    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
    Function RemoveListColumns(oList As ListObject, LabelNames As Variant, Optional IsDataOnly As Boolean) As Boolean
      ' Arguments
      '  oList        - Objet table
      '  LabelNames   - Variable tableau contenant les étiquettes de colonnes à supprimer
      '  [IsDataOnly] - True si l'on souhaite ne supprimer que les données de la colonne
      Dim Elem As Integer
      For Elem = 0 To UBound(LabelNames)
        On Error Resume Next
        With oList
          If IsDataOnly Then
             ' Suppression des données de la colonne
            .ListColumns(LabelNames(Elem)).DataBodyRange.ClearContents
           Else
             ' Suppresssion de la colonne complètes
            .ListColumns(LabelNames(Elem)).Delete
          End If
        End With
        On Error GoTo 0
      Next
    End Function
    Pour l'invoquer, (ligne 8 de la procédure TestRemoveListColumns publiée dans le Fil#7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RemoveListColumns oList:=objTable, LabelNames:=LabelToRemove, IsDataOnly:=True ' Supprime les colonnes
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 6
    Points : 5
    Points
    5
    Par défaut SUPPRESSION DE COLONNES
    Bonjour,
    J'ai suivi votre publication mais j'ai une demande différente et j'ai essayé plusieurs façon mais sans résultat
    Je vous explique: J'ai un tableau sur une feuille qui contient plus de 900 lignes et une 15ème de colonnes
    J'ai réalisé un VBA avec un Userform avec une combobox qui permet de selectionner un nom dans la colonne 1, une fois le choix validé,
    cela crée une nouvelle feuille, avec un tableau, qui normalement ne devrai contenir que les lignes ayant le nom sélectionné et qui en plus devrait n'avoir que quelques colonnes



    J'ai mis 2 captures une avec l'extrait du tableau complet et l'autre le résultat escompté

    Si vous pouvez m'aider je vous serai bien reconnaissant


    Nom : Capture d’écran 2022-11-03 214449.jpg
Affichages : 578
Taille : 199,2 KoNom : Capture d’écran 2022-11-03 214715.jpg
Affichages : 575
Taille : 32,0 Ko

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

Discussions similaires

  1. [Débutant] Tracer graphique à partir de certaines colonnes d'un tableau
    Par Vincent32 dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/04/2012, 19h59
  2. Cacher certaines colonnes d'un tableau en javascript
    Par Raiden1234 dans le forum Struts 2
    Réponses: 5
    Dernier message: 04/06/2008, 10h54
  3. Réponses: 7
    Dernier message: 17/07/2007, 15h29
  4. Comment centrer certaines colonnes d'un tableau ?
    Par Varglav dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/05/2007, 15h03
  5. Ne faire apparaître que certaine colonne d'un tableau
    Par zuzuu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/07/2006, 14h23

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