XL 2016 Masquer des colonnes avec critère inputbox

fodisio

XLDnaute Nouveau
Bonjour,
J'aurai besoin de vos connaissances en VBA afin de résoudre un problème qui est hors de ma portée.
Je dispose d'un tableau qui représente des tarifications.
En cliquant sur longueur j'ai une input box qui s'ouvre afin de renseigner sur les différentes option "longueur et après nombre de porte" ce qui me masque les lignes inutiles.
Ensuite ou je coince, j'aimerai toujours via une iputbox saisir ma premiere option concernant le nombre de porte miroir (colonnes E,F,G,H,I) en jaune. J'aimerai par exemple saisir une donnée situé entre E2:I2 et que les colonnes ne correspondants pas à ma saisie soit masquées.
EX: je saisie 3 dans ma inputbox et les colonne E F et H I se masque.
Mon tableau va avoir encore beaucoup de colonnes car il reste des options à saisir.
Je vous remercie de l'aide que vous pourrez apporter à mon ignorance.
Si vous avez une autre idée pour faire ce type de manipulation je suis ouvert à toutes propositions.
 

Pièces jointes

  • Tarif placard.xlsm
    23.5 KB · Affichages: 19

vgendron

XLDnaute Barbatruc
Hello

Un essai avec ta macro modifiée
VB:
Sub Longueur()
'
' Longueur Macro
'
' Sélection par longueur d'élément

If Not AutoFilterMode Then ' annule les filtres

valeur = InputBox("Longueur des éléments  ?")
Range("A1").AutoFilter Field:=1, Criteria1:="=" & valeur, Operator:=xlAnd

' Annule le filtre pour élément suivant
' On Error Resume Next
   '  Worksheets("Feuil1").ShowAllData


valeur = InputBox("saisir le nombre de portes")
Range("B1").AutoFilter Field:=2, Criteria1:="=" & valeur, Operator:=xlAnd

' Portemiroir Macro
'

    valeur = InputBox("Nombre de porte miroir")
    Application.ScreenUpdating = False
    For j = 5 To 9

            Cells(1, j).EntireColumn.Hidden = Not (CInt(Cells(2, j)) = CInt(valeur))

    Next j
'Columns("E:I").Hidden = True
'If Range("f2").Value = "2" Then Columns("G:I").EntireColumns.Hidden = True
'If Range("G3").Value = "3" Then Columns("F2, H2:I2").EntireColumns.Hidden = True

Application.ScreenUpdating = True


End If ' fin de commande

End Sub
 

Nairolf

XLDnaute Accro
Salut fodisio et vgendron,

J'ai écrit un code similaire à vgendron.
fodisio, à la place de :
VB:
Columns("F:I").EntireColumns.Hidden = False
If Range("f2").Value = "2" Then Columns("G:I").EntireColumns.Hidden = True
If Range("G3").Value = "3" Then Columns("F2, H2:I2").EntireColumns.Hidden = True
Tu peux mettre ceci :
VB:
Columns("E:I").EntireColumn.Hidden = False

For i = 1 To 5
    If i <> valeur Then
        Columns(i + 4).EntireColumn.Hidden = True
    End If
Next i
Il faut tout d'abord déclarer 'valeur' ainsi :
VB:
Dim valeur As Integer
 

fodisio

XLDnaute Nouveau
Bonjour,
Vous m'avez apporté deux méthodes différentes qui fonctionne à merveil, cela m'a permis de voir qu'il existe plusieurs façons de faire en VBA, que mon noviciat n'est pas prés de s'achevé et qu'il me reste tellement à apprendre.
Un grand merci à vous deux.
 

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2