Masquer des colonnes en fonction d'une valeur

  • Initiateur de la discussion Initiateur de la discussion Metabaron
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Metabaron

XLDnaute Nouveau
Bonjour, je m'arrache les cheveuxn sur un truc qui parait pas dur, mais que je n'arrive pas à sortir..

Contexte :
-Tableau avec entre 100 et 200 colonnes (nombre variable)
-Colonnes fonctionnant par 4 (par ex : col K : résultats ; col L : ± ; col M: incertitude ; Col N: test de conformité)
-Certaines colonnes devant accueillir un résulat sont vides
-d'un essais à l'autre les résultats ne sont pas ds les même colonnes.

Plus de details
-la ligne 16 contient du texte lorsque la colonne est utilisée
-la cellule à tester est sur la ligne 14, toutes les 4 colonnes K ; O ; S ; W...... si la cellule = 0 on masque, sinon on laisse et passe à la suite..


Objectif :
Masquer les colonnes vides

J'ai fait différents essais : avec des 'Do While Sheets("Résultats").Cells(16, colini) <> "" ou autres boucles, ca marche pas !!!!!

Voilà mon dernier test qui marche pas non plus... je craque !!!!, il me masque toutes les col , rien à faire qu'il y a un zéro ou non, et va meme pas jusqu'à la col 51...


Dim i, colini, colfin As Integer

colini = 11
colfin = 11

For colini = 11 To 51

'la condition if then suivante marche bien de K à N!!
'------------------------------------------
If Cells(14, colini).Value = 0 Then
i = 0
Do
Columns(colfin).Select
Columns(colfin).Hidden = True
colfin = colfin + 1
i = i + 1
Loop While (i < 4)
End If
'---------------------------------------------
colini = colini + 4

Next colini
End Sub

-------
Je sais plus, dc à votre bon coeur !!
 
Re : Masquer des colonnes en fonction d'une valeur

Bonjour Metabaron,

Fichier joint avec ces macros :

Code:
Sub Masquer()
Dim col As Integer, r As Range, masque As Range
For col = 11 To Cells(14, Columns.Count).End(xlToLeft).Column Step 4
  Set r = Cells(14, col).Resize(, 4)
  If r(1) = 0 Then Set masque = Union(r, IIf(masque Is Nothing, r, masque))
Next
If Not masque Is Nothing Then masque.EntireColumn.Hidden = True
End Sub

Sub Afficher()
Columns.Hidden = False
End Sub
A+
 

Pièces jointes

Re : Masquer des colonnes en fonction d'une valeur

Bonjour Job, franchement, je suis scotché, c'est trop fort, t'as fait un truc en 5 min que j'ai cherché plusieurs heures, je Retourne à ma panoplie de petit chimiste...
Sinon un ami m'a proposé quasi en meme temps que ton post la macro ci-dessous, même si elle est moins belle, je la copie pour lui faire honneur, il a pas mal cherché aussi..

Dim i, colini As Long
colini = 11
Do
If Cells(14, colini) = 0 Then
Range(Columns(colini), Columns(colini + 3)).Select
Range(Columns(colini), Columns(colini + 3)).Hidden = True

colini = colini + 4
Loop Until Sheets("Résultats").Cells(16, colini) = ""

End Sub


Encore Merci et à une prochaine !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Retour