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 :

Détermination dynamique des colonnes à supprimer [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Par défaut Détermination dynamique des colonnes à supprimer
    Bonjour à tous!

    Je suis un autodidacte en VBA car je n'ai aucune formation en informatique (je suis chimiste ). Je suis stagiaire en contrôle qualité pour une grosse PME et j'ai des tâchers répétitives à effectuer. J'aimerai rendre flexible mes macros que j'ai déjà développées, mais je me heurte aux problèmes suivants:
    • J'ai un logiciel qui me fait des export vers excel
    • Les exports ont toujours une partie commune et une partie variable
    • J'ai besoin de determiner dans la partie variable quelle(s) colonne(s) conserver en function de l'intitulé de ladite colonne, et de supprimer le reste
    • J'ai besoin de conserver toujours la(les) colonne(s) avec le même en-tête, mais qui ne sont pas positionnées au(x) même(s) emplacement en fonction du produit traité
    • Généralement, à la suite de la suppression des colonnes, j'applique un traitement statistique basique puis quelques fois des graphiques en function de la demande.


    Pour ce faire, j'ai tenté des For Each en bouclant sur les colonnes de la feuille, des For en determinant le nombre de colonnes presents et en incluant à chaque fois des If Not avec des LIKE pour determiner si cet en-tête est à conserver ou non, mais sans résultats concluants.

    J'ai également pour projet de rendre ma macro encore plus flexible en demandant à l'utilisateur d'indiquer quelles colonnes il souhaite épargner avant d'appliquer un traitement violent aux autres colonnes de la feuilles

    Je suis ouvert à toutes pistes et propositions, et je me tiens à votre disposition pour de plus amples détails!

    Cordialement

    NB1: le correcteur orthographique de mon ordinateur de travail a tendance à corriger tout seul mes textes, mais en anglais... Ne m'en voulez pas si certains mots sont passablement écorchés

    NB2: Je peux vous fournir quelques exports excel si nécessaires mais ils seront banalisés car ces données sont sous le coup du secret industriel.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    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
    Sub test()
    Dim Entete As New Collection, R As Range, C As Integer, ASupprimer
    Range("A1:H1") = Array("a", "z", "e", "r", "t", "y", "u", "i") 'Barre de titre de collone
    ASupprimer = Array("", "z", "r", "y", "i") 'Les colonnes à supprimer
    'Appretissage du N° de colonnes par entête
    For C = 1 To ActiveSheet.Range("A1").CurrentRegion.Columns.Count
        Entete.Add C, ActiveSheet.Cells(1, C).Text
    Next
    'Marquer en jaune les entête à supprimer
    For C = 1 To UBound(ASupprimer)
      Cells(1, Entete(ASupprimer(C))).Interior.Color = 65535
    Next
    'suppression des colonnes marquées en jaune
    For C = ActiveSheet.Range("A1").CurrentRegion.Columns.Count To 1 Step -1
        If Cells(1, C).Interior.Color = 65535 Then Columns(C).Delete
    Next
    End Sub
    Dernière modification par Invité ; 17/02/2016 à 11h41.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Par défaut
    Bonjour,

    Merci pour votre réponse très rapide.

    Si j'analyse le code que vous avez fourni, il me semble que vous attribuez un nom à chaque colonne, et que ensuite, vous déterminez en fonction de ce nom quelles colonnes supprimer. Ce n'est pas tout à fait ce dont j'ai besoin pour plusieurs raisons:
    • Mes colonnes ont déjà leurs en-têtes et je ne souhaite pas changer cela
    • Ce n'est pas flexible car si deux colonnes sont inversées dans un export (pour diverses raisons), je n'aurais pas la bonne de conservée


    Est-il possible de créer à l'exécution de la macro un array avec toutes mes en-têtes, et ensuite de chercher dans cet array les valeurs à conserver?

    Edit: voici un exemple de fichier que je dois traiter
    Nom : Capture.PNG
Affichages : 140
Taille : 15,1 Ko

    Par exemple, je dois conserver les colonnes :
    - Batch
    - Total Solid

    Et le soucis est que dans un autre extract, la colonne Total Solid ne sera pas en position L

  4. #4
    Invité
    Invité(e)
    Par défaut
    petit malin, comment veux tu que je te fournis un exemple si je ne donne pas des entête à titre d'exemple!

    maintenant, si tu inverses les colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A1:H1") = Array("i", "z", "e", "a", "u", "r", "t", "y") 'Barre de titre de collone
    bien sur les entêtes seront celle de ton import!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    petit malin, comment veux tu que je te fournis un exemple si je ne donne pas des entête à titre d'exemple!

    Bonne réponse J'ai édité mon message précédent pour y inclure un exemple

    Désolé pour mon impertinence !

  6. #6
    Invité
    Invité(e)
    Par défaut
    dans l'exemple qui suis, je supprime - Batch - Total Solid!
    bien sur toi tu veux les conserver, mais pour le copier collé un image c'est pas cool! mais tu peux comprendre aisément le principe et adapter ASupprimer = Array("",?,?,?)
    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
    Sub test()
    Dim Entete As New Collection, R As Range, C As Integer, ASupprimer
    'Range("A1:H1") = Array("a", "z", "e", "r", "t", "y", "u", "i") 'Barre de titre de collone
    ASupprimer = Array("", "Batch", "Total Solid") 'Les colonnes à supprimer
    'Appretissage du N° de colonnes par entête
    For C = 1 To ActiveSheet.Range("A1").CurrentRegion.Columns.Count
        Entete.Add C, ActiveSheet.Cells(1, C).Text
    Next
    'Marquer en jaune les entête à supprimer
    For C = 1 To UBound(ASupprimer)
      Cells(1, Entete(ASupprimer(C))).Interior.Color = 65535
    Next
    'suppression des colonnes marquées en jaune
    For C = ActiveSheet.Range("A1").CurrentRegion.Columns.Count To 1 Step -1
        If Cells(1, C).Interior.Color = 65535 Then Columns(C).Delete
    Next
    End Sub

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

Discussions similaires

  1. Taille dynamique des colonnes sur une ListView
    Par Julien_G dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 07/05/2009, 11h17
  2. Réponses: 2
    Dernier message: 19/03/2009, 15h53
  3. Redimensionnement dynamique des colonnes
    Par jamin dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 07/01/2009, 17h08
  4. Gestion dynamique des colonnes dans un TVirtualTreeView
    Par engi dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/03/2008, 16h17
  5. Réponses: 4
    Dernier message: 18/04/2007, 23h23

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