Boucle sur variation de référence de colonne pour graisse de contour de cellules

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,
Je vous mets à nouveau à contribution pour m'aider à bien formuler la macro suivante, inspirée d'une boucle sur lignes fonctionnant bien.
Mais celle-ci doit être adaptée sur le n° de colonne, entre colonne D et colonne AE avec un pas de 3.
Voici un début de programmation :

VB:
'** Attention ici il faut faire une boucle sur la variation de la colonnes et non plus sur ligne
'"B4:D104" puis "E4:G104", "H4:J4"... jusqu'à "AC4:AE4" avec donc un pas de 3
Dim c ' la colonne 
For c = B To AC
    Range("B4:D104").Select ' ça donnerait Range(c &"4:" & c+2 & "104").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = 16
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = 16
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = 16
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = 16
    End With
c = c + 3
Next
    Range("B5").Select
...

Merci
Webperegrino
 

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Bonjour à tous

Testes les deux macros ci-dessous

J'espère qu'au moins une des macros correspondra au résultat souhaité ;)

Code vba:
Sub BordersI()
Dim c& ' la colonne
For c = 2 To 29 Step 3
Cells(4, c).Resize(101, 3).BorderAround ColorIndex:=16, Weight:=xlMedium
Next c
End Sub




Code vba:
Sub BordersII()
Dim c& ' la colonne
For c = 2 To 29 Step 3
With Cells(4, c).Resize(101, 3).Borders
.LineStyle = 1
.Weight = xlMedium
.ColorIndex:=16
End With
Next c
End Sub
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Le Forum,
Bonjour Staple1600,
C'est parfait avec la première codification que j'adopte dans le fichier destination.
Merci beaucoup.
La deuxième n'obtient pas l'effet désiré donc je garde la première.
Merci pour ton intervention rapide.
Cordialement,
Webperegrino
 

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Re

Juste pour une simplification de la BorderII
Code:
Sub BordersIII()
With Cells(4, 2).Resize(101, 28).Borders
    .LineStyle = 1
    .Weight = xlMedium
    .ColorIndex = 16
End With
End Sub
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Le Forum, Staple 1600,
Et si ce n'est pas trop demander, pour limiter l'impression d'une plage sur une feuille du fichier.
Comment monter la macro au plus simple pour ceci :

Cacher à l'impression les colonnes dont toutes les cellules contiennent « 0 » entre D5 et AG 37, puis les remettre visibles après l'impression ou l'aperçu avant impression ?

Merci, c'est ma dernière requête et ce n'est pas urgent.
Bon week-end
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Je pense à ceci mais je ne suis pas certain :

[hightlight=vba]
'Masquer
Dim k As Long
For k = 5 To 33’D à AG
If “Columns(k)” &38 = 0 then’ valeur à la cellule ligne 38
Columns(k).EntireColumn.Hidden = True
Next k

Sheets("FICHE").Range("D:AG").EntireColumn.Hidden = False
[/code]
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Re


Essayes ceci:
Première exécution: masque les colonnes
Seconde exécution: démasque les colonnes
Code vba:

Sub MasquerColonnes()
'Test OK sur mon PC
Dim c&
For c = 2 To 29
Columns(c).Hidden = Application.CountIf(Cells(5, c).Resize(33), 0) = 33 = Not Columns(c).Hidden
Next c
End Sub
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Le Forum, Staple 1600,
Merci pour cette proposition.
Ça bloque dans mon fichier mais je me suis inspiré de ta programmation pour caler ceci et tout fonctionne parfaitement.
Voici ma version "Staple1600-bis", merci encore car mon application est devenue une merveille à 100 %.
Cordialement
Webperegrino

[hightlight=vba]
'.../...
'MasquerColonnes
Dim c&
For c& = 5 To 33 'D à AG
If Cells(38, c&).Value = 0 Then ' valeur à la cellule ligne 38
Columns(c&).EntireColumn.Hidden = True
End If
Next c&

.../...

'AfficheColonnes
For c& = 5 To 33 'D à AG
Columns(c&).EntireColumn.Hidden = False
Next c&

... /...
[/hightlight]
 

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Re


Ma macro précédente se bornait à traiter ceci:
Cacher à l'impression les colonnes dont toutes les cellules contiennent « 0 » entre D5 et AG 37
(ce qui explique cette ligne: Application.CountIf(Cells(5, c).Resize(33), 0) = 33)
voir copie d'écran ci-dessous
masque0.jpg
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Le Forum, Staple 1600,
... ce qui est pas mal non plus mais avec, dans le cas de mon application, il me faut convertir ta formule pour "cacher les colonnes dont mes cellules sont toutes vides de haut en bas" [c'est pour cela que j'ai dû mettre un comptage en cellules de la ligne 38].
Je vais donc étudier ta formulation pour l'adapter à mon tableau de colonnes occupées ou pas dans le pavé D5:AG37.
Encore merci pour tes lumières : j'avance.
Webperegrino
 

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Bonsoir

Je fais la différence entre une cellule égale à zéro et une cellule vide.
Pour moi ce n'est pas la même chose ;)

Donc pour le cas des cellules vides
NB: en restant sur la même condition de plage que tu indiquais précédemment:
entre D5 et AG 37
Si tu avais pris le soin de joindre un fichier exemple reflétant la structure des tes colonnes, les tests seraient plus aisés...:rolleyes:
Code vba:
Sub MasquerDemasquerColonnesVides()
'Test OK sur mon PC
'ici on teste les colonnes
'de la ligne 5 à 37
Dim c&
With Application
.ScreenUpdating = False
For c = 2 To 29
Columns(c).Hidden = _
.CountBlank(Cells(5, c).Resize(33)) = _
33 = Not Columns(c).Hidden
Next c
.ScreenUpdating = True
End With
End Sub
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Bonjour Le Forum,
Bonjour Staple1600,
N'en prends pas ombrage, il est vrai qu'un fichier même réduit t'aurait mieux orienté.
Mais d'autre part, pour moi, tes différentes remarques et tes raisonnements me font toutefois évoluer.
Aussi cette pédagogie jointe dans tes réponses m'est très favorable et je n'en serai pas le seul bénéficiaire ici ce ce Forum si solide.
Grand merci Staple1600, mon fichier réel fonctionne à merveille maintenant grâce à toi,
Cordialement à vous tous sur le Forum,
Webperegrino
 

Staple1600

XLDnaute Barbatruc
Re : Boucle sur variation de référence de colonne pour graisse de contour de cellules

Bonjour à tous

Webperegrino
Je n'en prends nullement ombrage (bien qu'avec cette chaleur, je serai pas contre un peu d'ombre) ;)
Tant mieux si désormais tout fonctionne chez toi ;)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2