Inversion de colonne VBA

Résolu
Bonjour,

Je voudrai savoir si il était possible d'inverser le contenu de plusieurs colonnes gràce au vba ?
Ex : Colonne D ==> Colonne B
Colonne B ==> Colonne C
Colonne C ==> Colonne D

J'espere avoir été assé claire :)

Merci pour vos réponse :)

4 réponses

  1. Bonjour
    Moi je prefere deplacer la colonne
    example:
    Sub DeplaceCol()
       Columns(4).Cut
       Columns(2).Insert Shift:=xlToRight
       Range("A1").Select
    End Sub
    

    A+
    Maurice
    2
    1. Merci pour ta réponse je les reproduite et ca marche :)
      je choisi ta méthode je la trouve plus simple

      Merci à vous Bonne journée :)
      0
  2. Bonjour,

    Oui, c'est possible. Tu peux même te limiter au premier déplacement :colonne D devant colonne B.
    Les autres colonnes seront automatiquement à la bonne place.

    Si au delà de ta question tu souhaites savoir comment faire, utilises l'enregistreur de macro et tu auras le code.

    Cordialement
    1
    1. Bonjour,

      Oui cela est possible grâce a la suite de commande copy et paste

      Dans ton cas:
      dim exemple as Range  // Déclaration de ton champs d'action
      exemple = Range("A1;E600)  // Selection d'une range large,  a adapter suivant la Longueur de tes colonnes.
      exemple.Column(4).select     // Selectionne la colonne D
      Selection.copy                //Copie de la Colonne selectionner
      
      exemple.Column(5).select  //Selectionne la Colonne E 
      ActiveSheet.Paste              // Colle ce qui est copier dans la colonne selectionnée


      J'espère avoir été assez claire , a faire suivant ton désir:)
      Tiens moi au courant si il y a un truc que tu ne comprend pas.
      0
      1. Merci pour ta réponse :)
        Tu as été claire j'ai compris et reproduit sur mon tableau !

        Apres j'ai ausi reproduit la méthode de Maurice et je la trouve plus simple :)
        0
    2. Contributeur
      bonjour
      essaies:

      Option Explicit
      '------------------
      Sub bcd_cdb()
      Dim Derlig As Integer, T_in, T_out, cptr As Integer

      Application.ScreenUpdating = False
      Derlig = Cells.Find(what:="*", searchdirection:=xlPrevious).Row
      T_in = Range("B1:D" & Derlig)
      ReDim T_out(1 To Derlig, 1 To 3)
      For cptr = 1 To UBound(T_in)
      T_out(cptr, 1) = T_in(cptr, 3) '
      T_out(cptr, 2) = T_in(cptr, 1) '
      T_out(cptr, 3) = T_in(cptr, 2) '
      Next
      Range("B1").Resize(UBound(T_in), 3) = T_out

      End Sub

      0
      1. Bonjour Mchel
        Merci pour ta réponse cela fonctionne aussi :)
        0