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 :

Suppresion de colonnes jointes & disjointes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 67
    Par défaut Suppresion de colonnes jointes & disjointes
    Bjr

    j'ai une feuille constitée de plusieurs colonnes (56 au total).

    Le contenu de certaines colonnes m'étant totalement inutile, j'ai donc besoin de les supprimer.

    Or certaines sont jointes et d'autres sont disjointes (par ex : suppression des colonnes A à D, puis H à M, puis colonne Q,...)

    Ne sachant trop comment faire , j'ai donc fait ceci

    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
     
    Macro2()
     Columns("A:D").Select
        Selection.Delete Shift:=xlToLeft
     
        Columns("D:I").Select
        Selection.Delete Shift:=xlToLeft
     
        Columns("E:F").Select
        Selection.Delete Shift:=xlToLeft
     
        Columns("G:G").Select
        Selection.Delete Shift:=xlToLeft
     
        Columns("I:K").Select
        Selection.Delete Shift:=xlToLeft
        Columns("J:J").Select
        Selection.Delete Shift:=xlToLeft
     
    End Sub
    qui n'est pas très joli et cetainement pas très optimisé.

    Y a t-il moyen de faire autrement ?

    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Déja tu peux retirer tous les selects et ecrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("A:D").Delete Shift:=xlToLeft
    Ensuite pour créer une plage non continue tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub eff()
    Dim Plage As Range
    Set Plage = Columns("A:C") 'defini la plage comme étant les colonnes A à C
    Set Plage = Application.Union(Plage, Columns("G:H")) 'ajoute les colonnes G et H à la plage
    Plage.Delete shift:=xlToLeft 'suprime la plage
    End Sub

  3. #3
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut Effacement de colonne
    Un conseil si tu supprimes des colonnes , commence par la droite car sinon , on ne connait plus l'ordonnancement des colonnes après N suppressions.
    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for each colonne in array ( "W:W" , "T:U" , " "J:K" , "D:I" )
        Columns(colonne).Delete Shift:=xlToLeft
    next
    Une autre simplification consiste à travailler ave des chiffres : array ( 22 ,20 ,10 )

    Je siais par expérience que travailler en aveugle peut avoir des conséquences graves ( imagines si tu lances 2 fois la macros ....).

    Le plus simple consiste à demander la suppression sur l'entête réelle de la colonne ; ex avec les entêtes sur la ligne 1 . De cette façon , il n'y a pas de risque de suppressions involontaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for each nom_colonne in array ( "nom colonne A" , "Nom" , "prenom " , "date" )
     
    for col = 1 to 50
    if cells ( 1 , col).value = nom_colonne  then Columns(col).Delete shift:=xlToLeft
      next col 
    next

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    Ma contribution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("A:D,H:M,Q:Q").Delete Shift:=xlToLeft

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 67
    Par défaut
    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2010, 14h14
  2. [MySQL] Jointure sur 2 colonnes de la table pour 1 colone jointe
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/12/2009, 11h44
  3. Afficher fichier joint dans colonne WSS3.0
    Par DELARUELLE dans le forum SharePoint
    Réponses: 1
    Dernier message: 26/03/2008, 18h08
  4. [PostGres] Suppresion d'une colonne.
    Par Gandalf24 dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/05/2003, 09h02
  5. [PostGres] Suppresion d'une colonne.
    Par Gandalf24 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 23/05/2003, 09h02

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