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 :

Problème Colonne macro [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mai 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 18
    Par défaut Problème Colonne macro
    Bonjour à toute et à tous, étant novice dans ce domaine des macros et du vba, je viens vers vous pour trouver une solution précise sur des colonnes.
    En effet dans la macro déjà présente et enregistrer avec l'enregistreur de macros, je vous met le bout du code ci dessus qui concerne mon problème :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    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
    Comme vous pouvez le voir, on supprime, déplace, remplace des colonnes. Cette macro a pour objectif après extraction sur SAP et exportation vers Excel, de créer une sorte de tableau avec seulement ce que l'on a besoin. Je viens vers vous pour que vous puissiez me donner une solution plus optimale, en code VBA si possible pour pouvoir, soit supprimer plus simplement les colonnes dont on n'a besoin, soit avoir un code qui me fait avoir que les colonnes que j'ai besoin et ne pas faire tout ce mic-mac.
    C'est compliqué à comprendre je vous l'accorde..

    Merci de vos réponses et très bonne soirée !

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 29
    Par défaut Première proposition
    Bonjour xszma,

    tu n'as pas besoin de passer par une étape de sélection pour détruire une colonne, tu peux le faire directement.
    Pareil pour le Cut/Insert.
    En appliquant ça, tu arrives à ceci (déjà plus clair):

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Application.CutCopyMode = False
     
    Columns("R:T").Delete Shift:=xlToLeft
    Columns("D:D").Delete Shift:=xlToLeft
    Columns("H:H").Delete Shift:=xlToLeft
    Columns("G:G").Delete Shift:=xlToLeft
    Columns("H:H").Delete Shift:=xlToLeft
    Columns("J:J").Delete Shift:=xlToLeft
    Columns("J:K").Delete Shift:=xlToLeft
    Columns("K:K").Delete Shift:=xlToLeft
    Columns("M:M").Delete Shift:=xlToLeft
    Columns("N:P").Delete Shift:=xlToLeft
    Columns("O:Q").Delete Shift:=xlToLeft
     
    Columns("T:T").Copy
    Range("ax1").Select
    ActiveSheet.Paste
     
    Columns("R:R").Copy
    Range("ay1").Select
    ActiveSheet.Paste
     
    Columns("R:U").Delete Shift:=xlToLeft
    Columns("S:Z").Delete Shift:=xlToLeft
    Columns("T:U").Delete Shift:=xlToLeft
    Columns("X:Z").Delete Shift:=xlToLeft
    Columns("Z:AE").Delete Shift:=xlToLeft
     
    Columns("D:D").Cut
    Columns("A:A").Insert Shift:=xlToRight
     
    Columns("S:S").Cut
    Columns("B:B").Insert Shift:=xlToRight
     
    Columns("H:H").Cut
    Columns("C:C").Insert Shift:=xlToRight
     
    Columns("G:H").Cut
    Columns("D:D").Insert Shift:=xlToRight
     
    Columns("I:J").Cut
    Columns("F:F").Insert Shift:=xlToRight
     
    Columns("K:K").Cut
    Columns("H:H").Insert Shift:=xlToRight
     
    Columns("L:L").Cut
    Columns("K:K").Insert Shift:=xlToRight
     
    Columns("Q:R").Cut
    Columns("M:M").Insert Shift:=xlToRight
     
    Columns("S:S").Cut
    Columns("P:P").Insert Shift:=xlToRight
     
    Columns("W:Z").Cut
    Columns("R:R").Insert Shift:=xlToRight
     
    Range("A1").Select
    Yves.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Yves_VBA Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Columns("T:T").Copy
    Range("ax1").Select
    ActiveSheet.Paste
    Même pour la copie le Select n'est pas obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns("T:T").Copy
    Columns("AX").PasteSpecial
    Ou, encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("T:T").Copy Columns("AX")
    Et il n'est pas indispensable d'indiquer une zone pour une référence unique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("T").Copy Columns("AX")

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et pour compléter la réponse de Menhir , j'ajouterai que si tu veux couper la colonne source en la copiant, il suffit d'utiliser la méthode Cut
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("B").Cut Destination:=Columns("G")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mai 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 18
    Par défaut
    Bonjour à vous,
    Et déjà un merci pour vos réponses!

    Quand je fait les manipulations que vous me dites, cela ne me donne pas la même chose que le code qu'il y avait avant. En effet, je veux modifier le code de l'enregistreur mais avoir le même résultat avec le même ordre, c'est important!

    Xszma

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par xszma Voir le message
    Quand je fait les manipulations que vous me dites, cela ne me donne pas la même chose que le code qu'il y avait avant.
    Quelles manipulations donnent un effet indésirable ?
    Quelle est la différence entre le résultat du code initial et du code après cette manipulation ?

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

Discussions similaires

  1. [XL-2016] Problème enregistrement macro convertir colonne entière
    Par med_mugen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2018, 15h45
  2. Réponses: 6
    Dernier message: 09/02/2017, 15h37
  3. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24
  4. [VBA-E] Problème activation macro
    Par kamshaa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2007, 17h02
  5. Problème colonne, image et texte
    Par Aline2611 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 27/07/2006, 15h12

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