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

  1. #1
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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
    Nouveau membre du Club
    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
    Points : 38
    Points
    38
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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")
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  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
    12 766
    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 : 12 766
    Points : 28 625
    Points
    28 625
    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
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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 ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    Il n'aime pas quand je coupe et colle par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Columns("G:H").Cut Destination:=Columns("D:D")
    De plus au niveau des colonnes que j'ai à la fin, l'ordre n'est pas le bon avec par exemple un code magasin qui se retrouve en colonne F au lieu de C. Ou bien encore j'ai des colonnes de vide qui on étais supprimé.
    Merci.

  8. #8
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne vois pas trop comment ça pourrait bien se passer avec un Select et mal se passer avec cette formulation.

    Tu n'aurais pas des cellules fusionnées par hasard ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    J'ai réussi Menhir ! C'étais bien cela les cellules étaient fusionnées.
    Je profite une dernière fois de ton savoir, sait-tu comment on peut mettre une formule dans un RANGE, j'ai un IF a mettre dans une colonne et je ne sais pas comment me débrouiller.
    Merci!

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    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 : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    sait-tu comment on peut mettre une formule dans un RANGE, j'ai un IF a mettre dans une colonne et je ne sais pas comment me débrouiller
    La réponse dans ce billet titré Ecrire une formule dans Excel à l'aide d'une procédure VBA
    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

  11. #11
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    ... ou dans l'aide VBA.
    Comment dit-on "formule" en anglais : https://docs.microsoft.com/fr-fr/off....range.formula
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    Bonjour !

    Mais j'ai quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =IF(AND(RC[-7]<>""#"",RC[-7]<>""NON OK""),RC[-7],RC[-2])
    Un peu difficile à comprendre et pas dans ce que vous m'avais envoyé ...

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    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 : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La formule que tu affiches est en référence R1C1 et la référence R1C1 c'est la même chose que $A$1

    Tu as deux propriétés pour écrire une formule (en dehors des locales) Formula et FormulaR1C1
    Le billet que je t'ai référencé donne suffisamment d'explications pour que tu puisses te débrouiller

    Petit exemple en excel référence A1 d'une fonction placée en B2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A2=10;"Oui";"Non")
    Voici ce que renvoie le VBA dans la fenêtre d'exécution de l'éditeur
    avec la propriété Formula
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print Range("B2").Formula
    =IF($A2=10,"Oui","Non")
    et avec la propriété FormulaR1C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print Range("B2").FormulaR1C1
    =IF(RC1=10,"Oui","Non")
    Si tu vas dans les options d'excel - Formules, tu as une option pour faire apparaître les formules dans ce type de référencement là, il suffit de cocher l'option Style de référence L1C1
    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

+ 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