Masque colonne vide (en ignorant les formules)

Lyly601 Messages postés 67 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 16 octobre 2006 - 21 févr. 2006 à 10:02
crogiez Messages postés 86 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 27 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

Next i

End Sub

Merci d'avance

4 réponses

crogiez Messages postés 86 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 27 décembre 2011
21 févr. 2006 à 10:12
bonjouir
Sub Coupe_Colonne()

'Supprime les lignes vides

Worksheets("Feuil1").Activate
Range("A1:IV65536").Select
areaCount = Selection.Areas.Count
nbrcol = Selection.Columns.Count
nbrlig = Selection.Rows.Count

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

End Sub

http://crogiez.free.fr
0
crogiez Messages postés 86 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 27 décembre 2011
21 févr. 2006 à 10:22
si la cellule A1 d(e la feuille 2)="";"";copie A1; égal 0
alors si tu fais la somme de la colonne

SI(E1";";E1;0)

http://crogiez.free.fr
0
Lyly601 Messages postés 67 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 16 octobre 2006
21 févr. 2006 à 10:30
Désolé mais ça ne résoud pas mon problème, quand il y a des formules ça ne masque pas ma colonne
0
crogiez Messages postés 86 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 27 décembre 2011
21 févr. 2006 à 17:35
chez moi çà marche

http://crogiez.free.fr
0
Rejoignez-nous