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 :

Comment adapter ces 2 codes pour obtenir le même résultat


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Comment adapter ces 2 codes pour obtenir le même résultat
    Salut le forum

    J'ai deux codes que je souhaite adapter pour avoir un seul code.
    Ci-dessous le premier:
    Ce code fonctionne dans un usf. Lorsque l'utilisateur 'active l'usf, il doit s'identifier (dans le textbox5) par un code utilisateur.Trois essais infructueux entrainent la fermeture du fichier.
    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
    Private Sub CommandButton1_Click()
    Dim I As Long
     
    For I = 1 To Range("Motdepasse").Count
        If Me.TextBox5.Value <> "" And UCase(Me.TextBox5.Value) = UCase(Range("Motdepasse")(I)) Then
        Sheets("ACCES_AU_SYSTEME").Range("H16") = TextBox5.Value
            Unload Me
            Exit Sub
        End If
    Next I
     
    Me.TextBox2.Value = Val(Me.TextBox2.Value) + 1
    If Me.TextBox2.Value = 3 Then
        ThisWorkbook.Close False
    Else
        Me.TextBox5.Value = ""
        Me.TextBox5.SetFocus
    End If
    End Sub
    Dans le deuxieme code ci-dessous, je renseigne le code utilisateur dans l'inputbox.ce code permet d'afficher les feuilles en fonction des utilisateurs.
    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
    Sub Gestion_Feuille()
     
     Dim I As Long, Ligne As Long, nbColonnes As Long, nbLignes As Long
        Dim User As String
     
        User = InputBox("Mot de passe")
        If User = "" Then Exit Sub
     
        nbLignes = Sheets("ADMIN").Cells(Rows.Count, "B").End(xlUp).Row
        nbColonnes = Sheets("ADMIN").Cells(3, Columns.Count).End(xlToLeft).Column
     
        'Trouver la ligne du User
        For I = 4 To nbLignes
            If Sheets("ADMIN").Range("B" & I) = UCase(User) Then
                Ligne = I
                Exit For
            End If
        Next
     
        'Parcourir ses feuilles permises
        For I = 4 To nbColonnes
            If Sheets("ADMIN").Cells(Ligne, I) = "x" Then
                Sheets(Cells(3, I).Value).Visible = xlSheetVisible
            Else
                Sheets(Cells(3, I).Value).Visible = xlSheetVeryHidden
            End If
        Next
        End Sub
    Je souhaite qu'on adapte le code de sorte qu'en renseignant le code utilisateur dans le textbox5(ce qui signifie que l'inputbox ne doit plus exister), que le fichier s'ouvre et aussi en fonction du code utilisateur renseigné, que les feuilles qui doivent s'affichier y soit.
    Je reste à votre disposition pour plus d'éclaircissements.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Quel est ton niveau de connaissance VBA ? As-tu une question particulière ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Salut Daniel et le forum

    Sans mentir je ne pourrais apprécier mon niveau.
    C'est à travers les forum que j'ai appris à connaitre le vba.
    J'arrive souvent à bidouiller certains code.
    J'ai tenté sans succes et voici ce que j'ai essayé:
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Private Sub CommandButton1_Click()
     
    Dim I As Long, Ligne As Long, nbColonnes As Long, nbLignes As Long
     
     
     
    nbLignes = Sheets("ADMIN").Cells(Rows.Count, "B").End(xlUp).Row
     
    nbColonnes = Sheets("ADMIN").Cells(3, Columns.Count).End(xlToLeft).Column
     
     
     
    For I = 1 To nbLignes
     
        If Sheets("ADMIN").Range("B" & I) = UCase(Range("Motdepasse")(I)) Then
     
        Ligne = I
     
        Range("H16") = TextBox5.Value
     
            Unload Me
     
            Exit For
     
        End If
     
    Next
     
    'Parcourir ses feuilles permises
     
        For I = 4 To nbColonnes
     
            If Sheets("ADMIN").Cells(Ligne, I) = "x" Then
     
                Sheets(Cells(3, I).Value).Visible = xlSheetVisible
     
            Else
     
                Sheets(Cells(3, I).Value).Visible = xlSheetVeryHidden
     
            End If
     
        Next
     
        Sheets("Facturier").Select
     
     
     
    Me.TextBox2.Value = Val(Me.TextBox2.Value) + 1
     
    If Me.TextBox2.Value = 3 Then
     
        ThisWorkbook.Close False
     
    Else
     
        Me.TextBox5.Value = ""
     
        Me.TextBox5.SetFocus
     
    End If
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Avec un peu de chance, ça devrait fonctionner :

    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
    Private Sub CommandButton1_Click()
    Dim I As Long, Ligne As Long, nbColonnes As Long, nbLignes As Long
    Dim User As String
     
    For I = 1 To Range("Motdepasse").Count
        If Me.TextBox5.Value <> "" And UCase(Me.TextBox5.Value) = UCase(Range("Motdepasse")(I)) Then
            Sheets("ACCES_AU_SYSTEME").Range("H16") = TextBox5.Value
            User = TextBox5.Value
            With Sheets("ADMIN")
               nbLignes = .Cells(Rows.Count, "B").End(xlUp).Row
               nbColonnes = .Cells(3, Columns.Count).End(xlToLeft).Column
     
               'Trouver la ligne du User
               For I = 4 To nbLignes
                   If .Range("B" & I) = UCase(User) Then
                       Ligne = I
                       Exit For
                   End If
               Next
     
               'Parcourir ses feuilles permises
               For I = 4 To nbColonnes
                   If .Cells(Ligne, I) = "x" Then
                       Sheets(Cells(3, I).Value).Visible = xlSheetVisible
                   Else
                       Sheets(Cells(3, I).Value).Visible = xlSheetVeryHidden
                   End If
               Next
            End With
            Unload Me
            Exit Sub
        End If
    Next I
     
    Me.TextBox2.Value = Val(Me.TextBox2.Value) + 1
    If Me.TextBox2.Value = 3 Then
        ThisWorkbook.Close False
    Else
        Me.TextBox5.Value = ""
        Me.TextBox5.SetFocus
    End If
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Merci pour votre proposition.
    IL y'a debogage dans cette partie du code (Variable de controle For déjà utilisée) :

  6. #6
    Membre éclairé Avatar de SCryptCypher
    Femme Profil pro
    MacGyver
    Inscrit en
    Novembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : MacGyver

    Informations forums :
    Inscription : Novembre 2013
    Messages : 35
    Par défaut
    Essaye en remplaçant les variables I dans les deux boucles "Trouver la ligne du User" et "Parcourir ses feuilles permises" par L et C par exemple

    N'oublie pas de les déclarer au début de la procédure
    Dim L, C As long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    For I = 1 To Range("Motdepasse").Count
    (...)
          For L = 4 To nbLignes
          (...)
          Next L
     
          For C = 4 To nbColonnes 
          (...)
          Next C
    (...)
    Next I

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/02/2014, 09h15
  2. [XL-2003] code pour obtenir une date
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/05/2010, 17h03
  3. Compiler du code pour obtenir un fichier .swf
    Par djamess dans le forum Flash
    Réponses: 4
    Dernier message: 20/01/2009, 09h33
  4. Réponses: 0
    Dernier message: 17/01/2009, 21h06
  5. Réponses: 6
    Dernier message: 02/01/2008, 14h35

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