Faciliter la macro

xszma Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,
Ci-dessous il y a un bout de macro qui a été enregistré il y a fort longtemps sans code vb et pas par moi-même, comment réussir à rendre ce code plus propre et plus simple.
Cela m'as l'air redondant et surtout casse-gueule.
Merci de vos réponses et bonne journée à vous !

Voila le bout en question :

Columns("R:T").Select
        Selection.Delete Shift:=xlToLeft
        Columns("D:D").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Columns("H:H").Select
        Selection.Delete Shift:=xlToLeft
        Columns("G:G").Select
        Selection.Delete Shift:=xlToLeft
        Columns("H:H").Select
        Selection.Delete Shift:=xlToLeft
        Columns("J:J").Select
        Selection.Delete Shift:=xlToLeft
        Columns("J:K").Select
        Selection.Delete Shift:=xlToLeft
        Columns("K:K").Select
        Selection.Delete Shift:=xlToLeft
        Columns("M:M").Select
        Selection.Delete Shift:=xlToLeft
        Columns("N:P").Select
        Selection.Delete Shift:=xlToLeft
        Columns("O:Q").Select
        Selection.Delete Shift:=xlToLeft
        Columns("T:T").Select
        Selection.Copy
        Range("ax1").Select
        ActiveSheet.Paste
        Columns("R:R").Select
        Selection.Copy
        Range("ay1").Select
        ActiveSheet.Paste
        Columns("R:U").Select
        Selection.Delete Shift:=xlToLeft
        Columns("S:Z").Select
        Selection.Delete Shift:=xlToLeft
        Columns("T:U").Select
        Selection.Delete Shift:=xlToLeft
        Columns("X:Z").Select
        Selection.Delete Shift:=xlToLeft
        Columns("Z:AE").Select
        Selection.Delete Shift:=xlToLeft
        Columns("D:D").Select
        Selection.Cut
        Columns("A:A").Select
        Selection.Insert Shift:=xlToRight
        Columns("S:S").Select
        Selection.Cut
        Columns("B:B").Select
        Selection.Insert Shift:=xlToRight
        Columns("H:H").Select
        Selection.Cut
        Columns("C:C").Select
        Selection.Insert Shift:=xlToRight
        Columns("G:H").Select
        Selection.Cut
        Columns("D:D").Select
        Selection.Insert Shift:=xlToRight
        Columns("I:J").Select
        Selection.Cut
        Columns("F:F").Select
        Selection.Insert Shift:=xlToRight
        Columns("K:K").Select
        Selection.Cut
        Columns("H:H").Select
        Selection.Insert Shift:=xlToRight
        Columns("L:L").Select
        Selection.Cut
        Columns("K:K").Select
        Selection.Insert Shift:=xlToRight
        Columns("Q:R").Select
        Selection.Cut
        Columns("M:M").Select
        Selection.Insert Shift:=xlToRight
        Columns("S:S").Select
        Selection.Cut
        Columns("P:P").Select
        Selection.Insert Shift:=xlToRight
        Columns("W:Z").Select
        Selection.Cut
        Columns("R:R").Select
        Selection.Insert Shift:=xlToRight
        Range("A1").Select
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

commence par remplacer:

Columns("R:T").Select
        Selection.Delete Shift:=xlToLeft


par


Columns("R:T").Delete Shift:=xlToLeft
       


pareil pour la suite

Voilà


1
xszma Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, quand je fait cela, j'ai pas le bon résultat escompté
Tu aurais pas une idée en VBA pou recommencer tout mon code et dans ce dernier sélectionner que les colonnes que je veux pour éviter de supprimer comme ça par la suite ?
Car au départ j'ai un tableau avec de nombreuses colonnes avec des infos inutiles et pas dans le bon ordre pour qu'au final j'arrive sur un tableau avec peu de colonnes, le bon ordre des colonnes!
Merci !
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Ce que tu demandes, il n'y a que toi qui sache ce que tu veux!
0
xszma Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je ne sais pas comment faire un code qui me permet de copier puis coller que les colonnes que je souhaite!
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Tu as l'enregistreur de macro pou t'aider.

Copier et coller où?
0
xszma Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui je l'ai mais j'aimerai faire sans pour optimiser mon code.
C'est une extraction de SAP que je fait dans un premier temps puis ensuite je copie colle tout cela sur une feuille Excel, mais toutes les colonnes que j'extrait ne m'intéresse pas, j'aimerai en supprimer certaines (comme cela est fait plus haut avec l'enregistreur de macro) OU pouvoir sélectionner que ce que je souhaite de base sans avoir a supprimer après! Avez-vous compris ce que je souhaite ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
comme ceci:

Option Explicit
Private Sub CommandButton1_Click()
Dim resultat As String
    resultat = InputBox("Quelle colonne voulez-vous supprimer?", "Suppression colonne", "A") 'La variable reçoit la valeur entrée dans l'InputBox
    If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
        Columns(resultat & ":" & resultat).Delete Shift:=xlToLeft
    End If
 End Sub


Voilà
0