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 :

Macro : Déplacer des colonnes sur une même feuille


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut Macro : Déplacer des colonnes sur une même feuille
    Bonsoir à tous,

    J'ai une question qui peut paraitre bizarre mais je me lance quand même.

    Est-il possible à l'aide d'une macro de déplacer des colonnes ?

    Je m'explique un peu plus, j'ai un classeur avec une vingtaine de colonnes, et je souhaiterai modifier l'ordre de ces colonnes et cela sur une même feuille.

    Exemple : remplacer la colonne B par la colonne F.
    B deviendrai F et F deviendrai B

    Par avance merci et bonne soirée.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Si tu veux tout copier, tu peux utiliser une colonne vide, par exemple ZZ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Thisworkbook.Worksheets("NomFeuille")
        .Range("B:B").copy .Range("ZZ:ZZ")
        .Range("F:F").copy .range("B:B")
        .Range("ZZ:ZZ").copy .Range("F:F")
        .Range("ZZ:ZZ").delete
    End with
    Pour l'idée.

    COrdialement,

    PGZ

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    La gymnastique
    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
    Private Sub CommandButton1_Click()
    Permut 2, 6 'permuter colonne 2 et 6 de la feuille active
    End Sub
     
    Sub Permut(Col1 As Integer, Col2 As Integer)
    Dim c1 As Integer, c2 As Integer
     
    c1 = IIf(Col1 < Col2, Col1, Col2)
    c2 = IIf(Col1 > Col2, Col1, Col2)
    Application.ScreenUpdating = False
    Columns(c2).Copy
    Columns(c1).Insert
    Columns(c1 + 1).Cut Cells(1, c2 + 1)
    Columns(c1 + 1).Delete
    End Sub

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Bonsoir PGZ,

    Merci pour ta réponse et ton idée.

    Ton idée est bonne et j'avoue que je n'avais pas pensé à cela.
    Cela veut donc dire que les remplacer n'est pas possible ? Je m'en doutais un peu.

    Je vais adapter ton code à mon classeur, je te remerciement inifiment, ca va m'éviter de le faire manuellement.

    Bonne soirée.

    Bonsoir Mercatog,

    Oups je n'avais pas vu ta réponse.

    Merci pour ton code.

    Je dois l'appliquer sur plusieurs colonnes, peux-tu me dire ce qui permet de definir la colonne dans ce code, SVP ?

    Le 2 je comprends que c'est la colonne B mais comment je sais que la colonne F est concernée ?

    Merci à tous pour votre réactivité .

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    La sub Permut permet de permuter 2 colonnes de ta feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Permut(Col1 As Integer, Col2 As Integer)
    Elle permet de permuter la colonne Col1 avec Col2

    Si tu veux permuter la Colonne B (colonne 2) et la colonne F (colonne 6), le code suivant fera l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub text()
    Call Permut(2, 6) 'ou simplement Permut 2, 6
    end sub

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Mercatog,

    Merci pour tes explications.

    Bonne soirée.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/06/2015, 11h23
  2. Réponses: 1
    Dernier message: 20/11/2012, 20h51
  3. Réponses: 4
    Dernier message: 18/12/2009, 13h44
  4. Réponses: 2
    Dernier message: 29/11/2006, 11h52
  5. Imprimer toutes les colonnes sur une même feuille
    Par Soulghard dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 12h10

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