Lyly601
Messages postés67Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention16 octobre 2006
-
21 févr. 2006 à 10:02
crogiez
Messages postés86Date d'inscriptionlundi 8 décembre 2003StatutMembreDernière intervention27 décembre 2011
-
21 févr. 2006 à 17:35
Bonjour à tous
J'aurais besoin que quelqu'un m'aide à paufiner une macro.
Voila je vous explique, j'ai une macro qui teste les cellules sur une plage donnée et qui masque les colonnes qui sont vides
Voici mon tableau
A B C D 1 n° offre nb de pièce Délais Commande 2 12 140 01/01
3 10 20 08/03
4
Ma macro teste la plage A2:D3 et si une colonne est vide comme ici la C, elle me la masque.
Mon problème est que dans se tableau se remplit automatiquement grace à une deuxieme feuille
Dans la cellule C2 par exemple je vais avoir une formule du type
si la cellule A1 d(e la feuille 2)="";"";copie A1
Dans mon exemple on en déduit donc que A1 est vide
Ma macro ne masque cependant pa cette colonne C car à l'intérieur de C2 et C3 il y a des formules, comment les ignorer??
voici ma macro
Sub Coupe_Ligne()
Dim i As Long
Dim collection As Range
Set collection = Range("A2:I20")
nbligne = ActiveSheet.UsedRange.Columns.Count
nbligne = nbligne + ActiveSheet.UsedRange.Column - 1
Application.ScreenUpdating = False 'Supprime les lignes vides
For i = nbligne To 1 Step -1
If Application.WorksheetFunction.CountA(collection.Columns(i)) = 0 Then Columns(i).Select
Selection.EntireColumn.Hidden = True
m = ""
m = m + CStr(Selection.Columns.Count) + " colonnes" + vbCrLf
m = m + CStr(Selection.Rows.Count) + " lignes" + vbCrLf
MsgBox m
numlig = 2
For numcol = 1 To nbrcol
If Feuil1.Cells(1, numcol).Value <> "" Then
somcol = 0
For numlig = 2 To nbrlig
somcol = somcol + Feuil1.Cells(numlig, numcol).Value
'm = ""
'm = m + "value : " + CStr(Feuil1.Cells(numlig, numcol).Value) + vbCrLf
'm = m + "somcol : " + CStr(somcol)
'MsgBox m
Next
If somcol = 0 Then
MsgBox "masquage colonne" + CStr(numcol)
'là on masque
Columns(numcol).Select
Selection.EntireColumn.Hidden = True
End If
End If
Next