j'aimerais supprimer les colonnes où il n'y a pas de noms sur la 1 ere ligne et si c'est possible avoir la même mise en page que sur la feuille résultat, c'est à dire ne gardant une ligne vide au dessus et une vingtaine de colonne.
Sub Nettoyer()
Dim DerCol%, C%
Application.ScreenUpdating = False
DerCol = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
For C = DerCol To 2 Step -1
If Cells(2, C) = "" Then
Columns(C).Delete Shift:=xlToLeft
End If
Next C
With ActiveSheet.UsedRange: End With
End Sub
=>sylvanu
Actuellement je suis limité à IV
Donc je ne trouve que celles-ci comme vides.
VB:
Sub Macro1()
Dim vides
vides = Split(Rows("2:2").SpecialCells(xlCellTypeBlanks).Address, ",")
Sheets.Add
Cells(1).Resize(UBound(vides) + 1) = Application.Transpose(vides)
End Sub
@Staple,
Et le fichiers a 616 colonnes.
Ceci dit il devrait marcher sur le mien. Mais il bloque à la colonne 66 ( d'origine ) qui se retrouve en colonne 39. Il ne va même pas jusqu'à la colonne 256.
En PJ après avoir passé votre macro. En ligne 11 il y a les N° de colonnes avant la macro.
=>sylvanu
Ce que je voulais dire c'est que pendant quelques jours, je ne suis pas sur mon PC.
(mais sur un PC avec Excel 2003)
Difficile de faire un test sur un *.xlsm
Avec la macro #7, il y a une partie correcte jusqu'à BC2, mais il manque toute la suite.
( en s'arrêtant à 256 colonnes )
Donc il y a bien un souci. Bizarre.
Sub WTF()
Dim t, i%, vides$
For i = 1 To 256
If Len(Cells(2, i)) = 0 Then
vides = vides & "," & Cells(2, i).Address
End If
Next
t = Split(vides, ",")
Sheets.Add
Cells(1).Resize(UBound(t)
+1) = Application.Transpose(t)
End Sub
- en ligne 2 il y a des cellules vides mais aussi des textes vides ""
- il y a des formules.
Donc il ne faut pas supprimer des colonnes mais les masquer, voyez le fichier joint et la macro :
VB:
Sub MAJ()
With Feuil7 'CodeName de le feuille de destination
Feuil5.Cells.Copy .[A1] 'copie-colle tout
.[A1].Copy .[A1] 'allège la mémoire
.DrawingObjects.Delete 'supprime les objets
With .Range("A1", .UsedRange).Rows(1)
.FormulaR1C1 = "=1/(COLUMN()>1)/(R[1]C="""")"
On Error Resume Next 'si aucune SpecialCell
.SpecialCells(xlCellTypeFormulas, 1).EntireColumn.Hidden = True 'masque les colonnes avec 1
.ClearContents
End With
.Activate 'facultatif
End With
End Sub