Se connecter avec
S'enregistrer | Connectez-vous

Supprimer une colonne avec VB

Dernière réponse : dans Programmation

Bonjour,

Voila, je débute en Visual Basic et j'aurais besoin d'aide pour réussir à retirer une colonne de ma feuille excel!
En fait j'ai plus de deux milles fichiers a traiter et les colonne ne sont pas toujours les mêmes à retirer donc j'ai besoin de faire une macro pour régler se problème.

Voila ce que je faisait mais cela ne fonctionne pas! il ne detecte pas la case que je veux lire et retire ma colonne peut importe si la valeur et bien comprise dans les bornes ou non:
  1. Range("C2").Select
  2. If -0.0001 <= Cells(2, 3) <= 0.0001 Then
  3. Columns("C:C").Select
  4. Selection.Delete Shift:=xlToLeft
  5. End If
  6. Range("D 2").Select
  7. If -0.0001 <= Cells(2, 4) <= 0.0001 Then
  8. Columns("D:D").Select
  9. Selection.Delete Shift:=xlToLeft
  10. End If


Ici je voulais repeter le test pour toute mes colonne ne sachant pas faire un boucle comme il faut!

En gros j'ai besoin de lire toutes les cases de la deuxième ligne sauf la première (texte), si la valeur x et comprise en -0.0001<= x <=0.0001 il faut supprimer la colonne sinon on garde la colonne et on passe a la suivante.

Merci d'avance!

Autres pages sur : supprimer colonne

Lassé par la pub ? Créez un compte
Expert Programmation

Alors commence par me virer les Machin.Select / Selection.Truc (Oui je sais c'est l'enregestreur de macro qui les a écrits) pour des Machin.Truc
  1. ' Pas bien
  2. Columns("C:C").Select
  3. Selection.Delete Shift:=xlToLeft


  1. ' Bien
  2. Columns("C:C").Delete Shift:=xlToLeft


Et partout où il y a un Select sans Selection derrière, c'est qu'il était inutile. Ca c'est juste pour me faire plaisir.

Donc alors c'est ligne 2 et 7 de ton bout de code que ça coince :
-0.0001 <= Cells(2, 3) <= 0.0001

Bah non, c'est logique pour un matheux, pas pour un informaticien ;) 

Il faut écrire :
-0.0001 <= Cells(2, 3) And Cells(2, 3) <= 0.0001


Es-tu allé lire l'aide VBA/Excel sur la méthode Columns() ? Tu y aurais appris que Columns("C:C") s'écrit aussi Columns(3). C'est plus pratique pour les boucles ;) 


Bon, si tu as suivi tout ce que je te propose et te fais remarquer, on en est là :
(J'ai viré les trucs inutiles et mis chaque clause sur une seule ligne pour mieux voir)
  1. If -0.0001 <= Cells(2, 3) And Cells(2, 3) <= 0.0001 Then Columns(3).Delete Shift:=xlToLeft
  2. If -0.0001 <= Cells(2, 4) And Cells(2, 4) <= 0.0001 Then Columns(4).Delete Shift:=xlToLeft
  3. If -0.0001 <= Cells(2, 5) And Cells(2, 5) <= 0.0001 Then Columns(5).Delete Shift:=xlToLeft
  4. If -0.0001 <= Cells(2, 6) And Cells(2, 6) <= 0.0001 Then Columns(6).Delete Shift:=xlToLeft

Vois-tu ce qui différencie chaque ligne ? Alors à toi de faire une boucle même si
Citation :
ne sachant pas faire un boucle comme il faut!


Bon alors encore une subtilité.
Si tu veux supprimer la colonne N°4 puis la colonne N°5, il faudra supprimer la colonne N°4 puis encore la colonne N°4 puisqu'à la première suppression, la colonne N°5 sera devenue la N°4. ...... [:thony] Pour éviter de devenir :pt1cable: , on utilise l'astuce suivante : on commence par supprimer par la droite (ou par le bas selon les cas). Donc, si tu veux supprimer la colonne N°4 puis la colonne N°5, supprime d'abord la N°5, puis la N°4. Ceci dit pour d'aider à faire ta boucle. L'aide de VBA/Excel devrait t'aider, au chapitre For .. Step .. Next
Lassé par la pub ? Créez un compte