Macro suppression colonnes qui ne fonctionne pas

Bonjour à tous,

Je débute sur Excel et VBA.

Je souhaite intégrer cette macro afin de supprimer les colonnes sélectionnées :

Sub supprimer_colonnes_inutiles()

' supprimer les colonnes inutiles

Range("A:A,D:D,G:G,H:H,I:I,J:J,K:K,M:M,O:O,P:P,Q:Q,R:R,S:S,T:T,V:V,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AD:AD,AE:AE,AG:AG,AH:AH").Delete

End Sub

Malheureusement elle ne fonctionne pas. Quelqu'un peut me dire ce qui ne va pas ?

Merci d'avance !

Loïc,

BOnjour

Delete seul supprime le contenu pas le contenant colonne

Il faut utiliser

Delete Shift:=xlToLeft

Bonjour,

Merci pour votre réponse rapide.

Après l'intégration de votre suggestion, j'ai toujours le même message d'erreur : erreur d'exécution '1004' : La méthode Delete de la classe Range a échoué.

Sub supprimer_colonnes_inutiles()

' supprimer les colonnes inutiles

Range("A:A,D:D,G:G,H:H,I:I,J:J,K:K,M:M,O:O,P:P,Q:Q,R:R,S:S,T:T,V:V,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AD:AD,AE:AE,AG:AG,AH:AH").Delete Shift:=xlToLeft

End Sub

RE

Je ne reproduit l'erreur ni sur 2010, ni sur 365.

Donc il faudrait voir le classeur. Cellules fusionnées ?

Bonjour,

Effectivement, quand j'utilise la macro directement sur un tableau que j'ouvre ça fonctionne.

Mais comme je voudrais pouvoir utiliser cette macro avec d'autres macros, je l'ai donc enregistré dans un autre tableau , puis j'insère le fichier en question pour pouvoir appliquer mes macros en faisant :

Données --> Obtenir des données --> À partir d'un classeur (ou À partir d'un ficher texte/CSV) --> Je sélectionne mon fichier --> Charger.

Et c'est là que ça ne fonctionne pas.

Vous trouverez en PJ mon tableau et toutes les macros.

Bonjour

Données --> Obtenir des données --> À partir d...

Utilise PowerQuery donc le tableau est un tableau structuré (ListObject) résultant d'une requête.

Cela ne se traite pas comme une plage.

La suppression des colonnes est à faire dans la requête PowerQuery.

Quand à la mise en forme tu dois tenir compte du tableau structuré et plutôt utiliser des styles.

Rebonjour,

Je viens de faire comme tu me le suggères, c'est à dire :

Données --> Obtenir des données --> À partir d'un classeur (ou À partir d'un ficher texte/CSV) --> Je sélectionne mon fichier --> Transformer les données --> Fermer et charger

Mais ça ne fonctionne toujours pas malheureusement... ça fonctionne pour toi ?

Merci pour les conseilles de mises en formes, je verrais ça juste après, une fois que mon premier problème sera résolu !

RE

Transformer : cela nécessite des actions de ta part avant de charger.

Tu dois donc supprimer les colonnes dont tu ne veux pas avant de Fermer et charger

D'accord mais il n'y a aucune utilité alors si je dois supprimer à la main avant de tout transformer ?

Est-ce qu'il excite une macro (peut-être autre que la mienne) qui permet de supprimer les colonnes comme je le souhaite ?

Bonsoir …

Tester (dans la fenêtre des codes de la feuille concernée) :

Sub supprimer_colonnes_inutiles()
  Dim c, n As Single  'c pour un tableau Single à cause du -1
  c = Array("A:A", "D:D", "G:K", "M:M", "O:T", "V:AE", "AG:AH")
  For n = 6 To 0 Step -1: Columns(c(n)).Delete: Next
End Sub

RE

Tu ne comprends pas le fonctionnement de PowerQuery : une fois que tu y auras paramétré la suppression des colonnes inutiles, tout comme VBA, la requête pourra agir sur toute nouvelle source.

La suppression par VBA a postériori ne sert à rien : l'actualisation de la requête rapatriant à nouveau les colonnes si ce n'est pas elle qui gère la suppression...

Bonjour Ordonc,

Super, ta macro fonctionne très bien tu me sauves merci beaucoup !!

Bonjour Chris,

Effectivement je ne dois pas comprendre le fonctionnement de PowerQuery mais j'avais besoin d'une macro qui puisse s'exécuter en même temps que les autres, quelque chose de simple qui puisse être utilisable par d'autres.

En tout cas un grand merci pour m'avoir aidé durant tous ces jours !!

Bonjour

Justement le but des requêtes c'est d'être transparent lors de l’utilisation.

Et comme déjà dit, avec un tableau structuré issu d'une requête active, ton VBA risque fort de mettre la grouille.

Manipuler eb VBA des Listobjects dynamiques sans tenir compte de ce fait... amusez-vous bien !

Rechercher des sujets similaires à "macro suppression colonnes qui fonctionne pas"