Menu

Faciliter la macro

Messages postés
7
Date d'inscription
lundi 20 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
-
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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
371
1
Merci
Bonjour,

commence par remplacer:

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


par


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


pareil pour la suite

Voilà


Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 44335 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
7
Date d'inscription
lundi 20 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
0
Merci
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 !
cs_Le Pivert
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
371 -
Ce que tu demandes, il n'y a que toi qui sache ce que tu veux!
xszma
Messages postés
7
Date d'inscription
lundi 20 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
> cs_Le Pivert
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
-
Je ne sais pas comment faire un code qui me permet de copier puis coller que les colonnes que je souhaite!
cs_Le Pivert
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
371 -
Tu as l'enregistreur de macro pou t'aider.

Copier et coller où?
xszma
Messages postés
7
Date d'inscription
lundi 20 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
> cs_Le Pivert
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
-
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 ?
cs_Le Pivert
Messages postés
6110
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2019
371 -
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à
Commenter la réponse de xszma