IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

masquer lignes et colonnes en fonction du choix listbox multiselection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 20
    Par défaut masquer lignes et colonnes en fonction du choix listbox multiselection
    Bonjour à tous
    Et bravo à tous les pros qui consacrent de leur temps a aidé les novices comme moi
    Jusque ici j’ai réussi grâce a toutes les solutions propose sur le forum et en adaptant à mes besoins
    A me débrouiller tout seul et à apprendre les rudiments du VBA
    Mais là je sèche
    Voici mon problème
    1 Je souhaiterais depuis une List box multi choix masquer les lignes qui ne font pas partis du choix

    2 Masquer les colonnes qui se trouve avant la valeur choisit dans le combobox 1 afficher les colonnes qui se trouve entre la valeur du combobox1 et la valeur du combobox2 et masquer les colonnes après la valeur du combobox 2

    3 Sélectionné les cellules de tarif visible et applique à l’aide de la valeur entre dans le textbox1 une augmentation de X %

    Ne sachant pas dans quelle direction aller toutes les propositions seront les bien venues

    Merci d’ avance
    Ci-joint mon fichier
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Francis, bonjour le forum,

    En pièce jointe ton fichier modifié. J'ai supprimé les cellules fusionnées, ennemies de VBA, rajouté un bouton et modifié le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private O As Worksheet
     
    Private Sub UserForm_Initialize()
    Dim Tableau As Variant
     
    Set O = Sheets("TARIF ")
    O.Rows(9 & ":" & 103).Hidden = False
    O.Columns("B:AM").Hidden = False
    Me.Choix.List = O.Range("A9:A103").Value
    Tableau = O.Range("B8:AM8")
    ComboBox1.List = Application.Transpose(Tableau)
    ComboBox2.List = Application.Transpose(Tableau)
    End Sub
     
    Private Sub B_multiple_Click()
    Me.Choix.MultiSelect = fmMultiSelectMulti
    End Sub
     
    Private Sub B_simple_Click()
    Me.Choix.MultiSelect = fmMultiSelectSingle
    End Sub
     
    Private Sub ComboBox1_Change()
    Dim I As Integer
     
    For I = Me.ComboBox1.ListIndex - 1 To 0 Step -1
        Me.ComboBox2.RemoveItem (I)
    Next I
    End Sub
     
    Private Sub validez_Click()
    Dim PL As Range
    Dim I As Integer
     
    Set PL = O.Range("A1")
    For I = 0 To Me.Choix.ListCount - 1
        If Me.Choix.Selected(I) = False Then Set PL = IIf(PL.Cells.Count = 1, O.Rows(I + 9), Application.Union(PL, O.Rows(I + 9)))
    Next I
    PL.EntireRow.Hidden = True
    Set PL = O.Range("A1")
    For I = 2 To Me.ComboBox1.ListIndex + 1
        Set PL = IIf(PL.Cells.Count = 1, O.Columns(I), Application.Union(PL, O.Columns(I)))
    Next I
    PL.Select
    For I = Me.ComboBox1.ListIndex + Me.ComboBox2.ListIndex + 3 To 39
        Set PL = IIf(PL.Cells.Count = 1, O.Columns(I), Application.Union(PL, O.Columns(I)))
    Next I
    PL.EntireColumn.Hidden = True
    O.Range("A5").Select
    Unload Me
    End Sub
    [Édition]
    Ligne 44 du code il y a un PL.Select que tu peux supprimer, c'était pour faire mes tests...
    Fichiers attachés Fichiers attachés

  3. #3
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 20
    Par défaut un grand merci
    Merci Thautheme
    Le temps que tu m’as consacré m’a fait gagner des semaines de galère .
    Et je n’aurais pas trouvé tout seul ce code.
    C’est exactement ce que je cherchais.
    Il ne me reste plus qu’à trouver comment sélectionner les cellules visibles contenant les tarifs pour leur appliquer le pourcentage d’augmentation désiré.

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Private Sub validez_Click()
    Dim PL As Range
    Dim TheCell As Range
    Dim I As Integer
    Dim Coef
     
        Set PL = O.Range("A1")
        For I = 0 To Me.Choix.ListCount - 1
            If Me.Choix.Selected(I) = False Then Set PL = IIf(PL.Cells.Count = 1, O.Rows(I + 9), Application.Union(PL, O.Rows(I + 9)))
        Next I
        PL.EntireRow.Hidden = True
        Set PL = O.Range("A1")
        For I = 2 To Me.ComboBox1.ListIndex + 1
            Set PL = IIf(PL.Cells.Count = 1, O.Columns(I), Application.Union(PL, O.Columns(I)))
        Next I
        'PL.Select
        For I = Me.ComboBox1.ListIndex + Me.ComboBox2.ListIndex + 3 To 39
            Set PL = IIf(PL.Cells.Count = 1, O.Columns(I), Application.Union(PL, O.Columns(I)))
        Next I
        PL.EntireColumn.Hidden = True
        O.Range("A5").Select
     
        Set PL = O.Range("B9", O.Cells(O.Rows.Count, "AM").End(xlUp)).SpecialCells(xlCellTypeVisible)
        For Each TheCell In PL
            'On remplace le . par une virgule si besoin
            'Il serait préférable de faire en sorte que la saisi dans le userform soit forcément numérique, il y a des exemples sur le forum ou  dans la FAQ
            Coef = CSng(Replace(Me.TextBox1.Text, ".", ","))
            'On verifie qie coef soit numeric
            If IsNumeric(Coef) Then
                TheCell.Value = TheCell.Value * CSng(Coef)
            Else
                MsgBox "Attention le coéficient doit être une valeur numérique", , "Coéficient non numérique"
            End If
        Next
     
        Unload Me
    End Sub
    Bonne soirée
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 20
    Par défaut un grand merci à tous les deux
    bonjour,
    je vous remercie, vous m'avez été d'un grand secours.
    le fichier est maintenant opérationnel à 100 %. Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Affichage TextBox en fonction de choix ListBox
    Par maninwhite dans le forum IHM
    Réponses: 10
    Dernier message: 31/01/2015, 19h03
  2. Réponses: 3
    Dernier message: 12/07/2013, 17h32
  3. [XL-2007] Afficher/Masquer colonnes en fonction de la selection de date
    Par Akane69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/06/2013, 19h41
  4. Masquer les colonnes en fonction d'un critère
    Par cqui12 dans le forum Excel
    Réponses: 1
    Dernier message: 27/03/2013, 20h15
  5. Réponses: 37
    Dernier message: 28/03/2008, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo