Faciliter la macro

Fermé
xszma Messages postés 7 Date d'inscription lundi 20 mai 2019 Statut Membre Dernière intervention 13 juin 2019 - Modifié le 23 mai 2019 à 09:53
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 23 mai 2019 à 15:15
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 mai 2019 à 10:51
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 lundi 20 mai 2019 Statut Membre Dernière intervention 13 juin 2019
23 mai 2019 à 12:15
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 mai 2019 à 12:21
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 lundi 20 mai 2019 Statut Membre Dernière intervention 13 juin 2019 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
23 mai 2019 à 14:25
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 mai 2019 à 14:34
Tu as l'enregistreur de macro pou t'aider.

Copier et coller où?
0
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
23 mai 2019 à 14:42
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 mai 2019 à 15:15
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