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

Excel Discussion :

Masquer, afficher les colonnes selon identification


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 67
    Points
    67
    Par défaut Masquer, afficher les colonnes selon identification
    Bonjour
    Je souhaiterais afficher ou masquer les colonnes d'une feuille.
    j'ai réaliser ce code mais il n'est pas correct.
    Pourriez-vous m'aider
    Merci
    Cordialement

    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
    Sub Affichecolonnes(Utilisateur As String)
    Dim Col As Byte, i As Byte, Lig As Integer, f As Worksheet
     
     
    With Sheets("parametrage") 'dans la feuille paramétrage
        'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
        Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
        Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
        'boucle à partir de 3 car Feuil1 toujours affichée
        'Set f = Worksheets("suivi")
        For i = 3 To Col
            If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
                Worksheets("suivi").Range(.Cells(1, i).Value).EntireColumn.Hidden = True 'on masque la colonne
     
            Else
                Worksheets("suivi").Range(.Cells(1, i).Value).EntireColumn.Hidden = False 'sinon on laffiche la colonne
            End If
        Next i
    End With
    End Sub

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le code n'étant que le reflet d'une structuration de pensée, et cette dernière était totalement absente puisque tu n'expliques rien et jette en pâture ton code, il est bien impossible pour nous de connaître la question que tu nous poses.

    en quoi ça ne fonctionne pas ? Quelle sont les conditions permettant de comprendre et masquer une/des colonne(s)

    s'il y a plantage de la procédure, à quelle ligne, avec quel message d'erreur ?


    déjà, sans parler d'erreur se présentant, ta ligne de code 9 est très dangereuse car tu n'as pas sécurisé l'utilisation de Find.
    Si ton utilisateur n'existe pas, tu as bon pour une belle erreur "Objet non défini" puisque tu ne prend pas le soin de tester si le retour du Find est un Objet Range qui ne soit pas "Nothing"

    partant de ce premier défaut, je ne me suis pas attardé en compréhension.

    A toi de jouer, donne nous l'envie et les billes pour t'aider !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 67
    Points
    67
    Par défaut
    Bonsoir
    La question est:
    Je souhaite masquer ou afficher les colonnes d'une feuille.nommée "Suivi"
    La feuilles Parametrage est organisé comme ceci:
    Ligne 1 colonne A Champ User, colonne B Mot de passe, de la colonne C à AA les références des colonnes de la feuille 'Suivi' A,B,C;D,E etc..
    Dans les cellules des lignes suivantes il y a des noms les mots de passe puis à partir de la colonne C la valeurs "X" pour les lignes à masquer.

    A l'ouverture du classeur j'ai créé un userform avec User et mot de passe
    Les users et mots de passe sont stockés dans la feuille "Parametrage"

    voici les codes
    1. A l'ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
     
    'Charge l'Userform en mémoire
    Load UserForm1
    'Affiche l'Userform
    UserForm1.Show
    End Sub
    puis à l'ouverture de Userform

    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
    'code se déclenchant à l'ouverture de Userform1
    Private Sub UserForm_Initialize()
    'vidage des textbox :
    TextBox1 = ""
    TextBox2 = ""
    'réglage des propriétés Caption
    'de l'Userform :
    Me.Caption = "Saisie du Mot de Passe"
    'des labels :
    Label1.Caption = "Utilisateur"
    Label2.Caption = "Mot de Passe"
    'du bouton
    CommandButton1.Caption = "VALIDER"
    'Remplace les caractères saisis dans le textbox2 par des astérisques
    Me.TextBox2.PasswordChar = "*"
    End Sub
    Action lorsque appuis sur le bouton

    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
    'Code se déclenchant au clic sur bouton
    Private Sub CommandButton1_Click()
    'Si TextBox1 est vide
    If TextBox1 = "" Then
        'Message à l'utilisateur
        MsgBox "Saisie du nom d'utilisateur obligatoire.", vbInformation
        'sortie de la procédure
        Exit Sub
    End If
    'Même chose avec TextBox2
    If TextBox2 = "" Then
        MsgBox "Saisie du mot de passe obligatoire.", vbInformation
        Exit Sub
    End If
    'Lance la fonction VerifMDP en utilisant :
        '- TextBox1 comme paramètre "utilisateur"
        '- TextBox2 comme paramètre "MdP"
    'Si la fonction renvoie FAUX :
    If VerifMDP(TextBox1, TextBox2) = False Then
        'c'est que le mot de passe ou l'utilisateur est faux donc
        'Message à l'utilisateur
        MsgBox "Erreur Mot de passe et/ou utilisateur. Merci de saisir à nouveau.", vbInformation
        'on vide les 2 textbox
        TextBox1 = ""
        TextBox2 = ""
        'on sort de la procédure
        Exit Sub
    End If
    'A partir d'ici, le code ne se déroule que lorsque mdp et nom sont corrects.
    'On peut donc afficher les colonnes correspondants à l'utilisateur saisi
    Affichecolonnes TextBox1
    'masque l'UserForm
    UserForm1.Hide
    End Sub
    j'ai aussi une fonction pour vérifier les user, mots de passe

    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
    'Code se déclenchant au clic sur bouton
    Private Sub CommandButton1_Click()
    'Si TextBox1 est vide
    If TextBox1 = "" Then
        'Message à l'utilisateur
        MsgBox "Saisie du nom d'utilisateur obligatoire.", vbInformation
        'sortie de la procédure
        Exit Sub
    End If
    'Même chose avec TextBox2
    If TextBox2 = "" Then
        MsgBox "Saisie du mot de passe obligatoire.", vbInformation
        Exit Sub
    End If
    'Lance la fonction VerifMDP en utilisant :
        '- TextBox1 comme paramètre "utilisateur"
        '- TextBox2 comme paramètre "MdP"
    'Si la fonction renvoie FAUX :
    If VerifMDP(TextBox1, TextBox2) = False Then
        'c'est que le mot de passe ou l'utilisateur est faux donc
        'Message à l'utilisateur
        MsgBox "Erreur Mot de passe et/ou utilisateur. Merci de saisir à nouveau.", vbInformation
        'on vide les 2 textbox
        TextBox1 = ""
        TextBox2 = ""
        'on sort de la procédure
        Exit Sub
    End If
    'A partir d'ici, le code ne se déroule que lorsque mdp et nom sont corrects.
    'On peut donc afficher les feuilles correspondants à l'utilisateur saisi
    Affichecolonnes TextBox1
    'masque l'UserForm
    UserForm1.Hide
    End Sub
    Le code suivant affiche l'erreur 1004 à la ligne
    Worksheets("suivi").Range(.Cells(1, i).Value).EntireColumn.Hidden = True


    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
    Sub Affichecolonnes(Utilisateur As String)
    Dim Col As Byte, i As Byte, Lig As Integer, f As Worksheet
    
    
    With Sheets("parametrage") 'dans la feuille paramétrage
        'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
        Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
        Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
        'boucle à partir de 3 car Feuil1 toujours affichée
        'Set f = Worksheets("suivi")
        For i = 3 To Col
            If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
                Worksheets("suivi").Range(.Cells(1, i).Value).EntireColumn.Hidden = True 'on masque la colonne
               
            Else
                Worksheets("suivi").Range(.Cells(1, i).Value).EntireColumn.Hidden = False 'sinon on laffiche la colonne
            End If
        Next i
    End With
    End Sub
    Voilà j'ai mis tous les codes.
    et je ne comprend pas

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'est-ce qui est exactement écrit sur la ligne 1 de la feuille de paramètres, à partir de la colonne C ?
    je ne suis pas non plus certain que l'utilisation de Byte soit judicieuse, ton pc ne va pas surchauffer si tu prend un long, qui lui ne te jouera pas de vilains tours

    si à partir de cette colonne C c'est l'ordre exacte des colonnes A,B,C,D de ta feuille de suivi, le problème est simplifiable avec une simple boucle qui débute en colonne 3 dans la feuille paramètre, pour faire une action sur la colonne 1 de ta feuille suivi

    sinon, regarde si tu ne devrais pas "transposer" l'organisation de tes données. Si par exemple tu as beaucoup d'utilisateurs avec des paramètrages identiques, et si au total tu n'as pas trop de "groupes différents" ... tu gères chaque groupe sur une colonne plutôt que de gérer chaque agent en ligne.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 67
    Points
    67
    Par défaut
    Bonsoir

    Je vais plutôt créer un formulaire de saisie.

    Merci @+

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

Discussions similaires

  1. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 09h16
  2. Réponses: 2
    Dernier message: 14/04/2008, 08h55
  3. Afficher les colonnes d'une table
    Par rudhf dans le forum Administration
    Réponses: 4
    Dernier message: 21/05/2007, 13h46
  4. [Debutant] Afficher les colonnes horizontalement
    Par thesailingcat dans le forum BIRT
    Réponses: 9
    Dernier message: 15/01/2007, 17h33
  5. Afficher les colonnes lors d'une extraction oracle
    Par griese dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/12/2006, 16h20

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