[Résolu] Macro supprimer une colonne

Macro supprimer une colonne [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 01-09-2006 à 11:27:13    

bonjour,
 
Je cherche une macro qui supprime une colonne à partir de son nom:
 
Exemple. J'ai un fichier excel avec les colonnes A,B,C,D,E et F
 
Comment faire pour supprimer C et d par exemple ?  
 
Vous allez me dire que je peux le faire à la main, mais c beaucoup plu scompliqué que ça car en fait j'ai au moins une centaine de colonne et j'enlève toujours les mêmes colonne donc je voudrai automatiser tt ça.
 
Merci

Message cité 1 fois
Message édité par le_bat75 le 01-09-2006 à 16:32:19
Reply

Marsh Posté le 01-09-2006 à 11:27:13   

Reply

Marsh Posté le 01-09-2006 à 12:05:09    

le_bat75 a écrit :

bonjour,
 
Je cherche une macro qui supprime une colonne à partir de son nom:
 
Exemple. J'ai un fichier excel avec les colonnes A,B,C,D,E et F
 
Comment faire pour supprimer C et d par exemple ?  
 
Vous allez me dire que je peux le faire à la main, mais c beaucoup plu scompliqué que ça car en fait j'ai au moins une centaine de colonne et j'enlève toujours les mêmes colonne donc je voudrai automatiser tt ça.
 
Merci


 
salut
 
tu utilises la propriété "delete" de l'objet "range".
 
par exemple tu veux effacer la colonne C uniquement:
Columns("C:C" ).Delete Shift:=xlToLeft  
le shift te permet de spécifier comment tu veux décaler les cellules qui vont remplacer les cellules effacées:  xlShiftToLeft (colonnes) ou xlShiftUp (lignes).
 
Si tu veux effacer les colonnes C à E, tu fais:
Columns("C:E" ).Delete Shift:=xlToLeft  
 
si tu veux effacer les colonnes C à E et la G, tu fais:
Columns("C:E,G:G" ).Delete
 
Si c'est les lignes 9 à 13, tu remplaces par:
Rows("9:13" ).Delete Shift:=xlUp

Message cité 1 fois
Message édité par acrosomia le 01-09-2006 à 12:05:49
Reply

Marsh Posté le 01-09-2006 à 12:06:46    

Ok super je vais essayer. Merci bien

Reply

Marsh Posté le 01-09-2006 à 12:08:22    

Bonjour,
Voici 2 macros
 
Sub Macro1()
    Selection.Delete Shift:=xlToLeft
End Sub
 
 
Sub Macro2()
x = InputBox("Numero de la colonne" )
    Columns(Val(x)).Delete Shift:=xlToLeft
End Sub
 
La première supprime la colonne qui contient la cellule active
La seconde demande le numero de la colonne
 

Reply

Marsh Posté le 01-09-2006 à 15:52:33    

acrosomia a écrit :


Columns("C:C" ).Delete Shift:=xlToLeft  


 
Cellle pr 1 colonne marche très bien
 
Par contre l'autre :  
 

acrosomia a écrit :


Columns("C:E,G:G" ).Delete


 
Ne fonctionne pas. J'ai un message : Erreur d'execution, Incompatibilité de type
 
Bizzare
 

Reply

Marsh Posté le 01-09-2006 à 16:03:54    

Fait attention
 
si tu detruis c à e la colonne g devient d
 
il faut commencer par détruire les colonnes les plus à droite

Reply

Marsh Posté le 01-09-2006 à 16:08:56    

OK je vois le pbm. A la place de "columns", tu mets "range":
 
Range("C:E,G:G" ).Delete
 
et normalement il n'y a pas de pbm.
 
 
 

Reply

Marsh Posté le 01-09-2006 à 16:10:57    

acrosomia a écrit :

OK je vois le pbm. A la place de "columns", tu mets "range":
 
Range("C:E,G:G" ).Delete
 
et normalement il n'y a pas de pbm.


 
Oui Effectivement ça fonctionne mieux comme ça :) Merci à tous pour votre aide.

Reply

Marsh Posté le 01-09-2006 à 16:17:32    

pyrof a écrit :

Fait attention
 
si tu detruis c à e la colonne g devient d
 
il faut commencer par détruire les colonnes les plus à droite


 
pas forcément, tu peux détruire tt d'un coup mais en fais il faut faire un "activate" par ex sur la 1ere cellule de la dernière colonne à effacer mm si son label est inférieur à des labels supérieurs de colonnes à effacer.
 
Range("B:D,F:F" ).Select
Range("F1" ).Activate
Selection.Delete Shift:=xlToLeft
 
ou  
 
Range("B:D,A:A" ).Select
Range("A1" ).Activate
Selection.Delete Shift:=xlToLeft
 
en gros avec columns, il faut donner un point d'activation après effacement...


Message édité par acrosomia le 01-09-2006 à 16:18:54
Reply

Marsh Posté le 01-09-2006 à 16:19:57    

le_bat75 a écrit :

Oui Effectivement ça fonctionne mieux comme ça :) Merci à tous pour votre aide.


 
un petit [résolu] en entête et hop!  :D  

Reply

Marsh Posté le 01-09-2006 à 16:19:57   

Reply

Marsh Posté le 04-12-2007 à 11:19:17    

Tout à fait ce que je cherchais.  
Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed