Suppression de colonnes par VBA

D

daniel

Guest
Bonjour à toutes et tous,

Excusez moi de reposer à nouveau ma question...qui concerne la programmation VBA d'un test... Je voudrais programmer un test qui me permette de :

1. sélectionner 7 colonnes d'une feuille d'un classeur
2. tester si l'une ou plusieurs de ces colonnes est vide (ni caractères, ni formules)
3. de supprimer cette ou ces colonnes vides, de manière à ce que les autres colonnes (pleines) deviennent contiguës

J'espère que vous pourrez m'aider, je vous en remercie d'avance !


Daniel
 
C

coyote

Guest
OK mais il faut définir au moins une limite dans ton test

Dans ma macro je limite à tester à la colonne n°10 variable I (colonne J)

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 10/01/2004 par home
'


For i = 10 To 1 Step -1 'numéro de colonne
If Cells(1, i).End(xlDown).Row = 65536 And Cells(1, i).Formula = "" Then 'si dernière ligne
Columns(i).Delete
End If
Next i
End Sub
 
C

coyote

Guest
OUPS j'ai lu trop vite

Ta limite est 7 colonnes .......contigues je suppose ?

Si oui le mieux est de sélectionner une cellule de la dernière colonne à tester si tu maintiens ma macro

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 10/01/2004 par home
'

Dim xdercol, xfintest As Integer

xdercol = ActiveCell.Column
xfintest = 1

If xdercol > 7 Then
xfintest = xdercol - 7
End If


For i = xdercol To xfintest Step -1

If i > 0 And Cells(1, i).End(xlDown).Row = 65536 And Cells(1, i).Formula = "" Then 'si dernière ligne
Columns(i).Delete
End If

Next i
End Sub
 
C

coyote

Guest
Quel abruti (je parle de moi)

çà marche mais le test I > 0 n'a plus d'intêrêt.

Etant donné le test fait plus haut (xfintest) la variable I ne sera jamais <=0.


If Cells(1, i).End(xlDown).Row = 65536 And Cells(1, i).Formula = "" Then 'si dernière ligne
 
D

daniel

Guest
Ca marche !!

Un immense merci, coyote, tu es loin d'être un abruti ! En plus, ça me permet de voir comment fonction "For...next", je n'avais pas très bien compris...

Encore merci pour ton aide et bravo !

Daniel
 
C

coyote

Guest
Merci pour tes compliments

FOR...... NEXT

Est une test en boucle avec un compteur si on veut

Le compteur est I (dans notre exemple cités ci dessus)

Il faut définir la fin des instructions de la boucle par NEXT I .....toujours précisé la variable car on peut imbriquer plusieurs boucles (avec plusieurs variables l'une dans l'autre)

FOR I =1......

FOR J = 1.....

......


NEXT J

NEXT I


On définit les bornes (limite) de la boucle

FOR I = 1 TO 10

commence à 1 et termine à 10

Le NEXT I renvoie +1 à la valeur I

Toutefois il s'agit de l'incrémentation par défaut

Pour la changer compléter les instructions par STEP

Par exemple

FOR I=10 TO 0 STEP -2

***

NEXT I


I prendra succéssivement les valeurs 10,8,6,4,2,0 car l'incrémentation est de -2 à chaque fois
 

Discussions similaires

Statistiques des forums

Discussions
313 102
Messages
2 095 290
Membres
106 244
dernier inscrit
Zamot