Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Masquer des colonnes en fonction d'une valeur

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 !!
 

job75

XLDnaute Barbatruc
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

  • feuille résultat(1).xlsm
    87 KB · Affichages: 73

Metabaron

XLDnaute Nouveau
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 !!
 

Discussions similaires

Réponses
2
Affichages
192
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…