XL 2019 VBA problème Then

jrmy34

XLDnaute Nouveau
Bonjour à tous,
et d'avance un grand merci pour votre aide à chaque fois c'est un plaisir et un soulagement.

J'ai tapé ce code et je n'arrive pas à comprendre pourquoi Excel me le signal en erreur ...
Je vous ai mis la ligne en question en rouge.

VB:
Private Sub CommandButton1_Click()
    Dim Feuil As Worksheet
    Dim MDP
    
    On Error Resume Next
        If Me.TextBox1.Value = "" Then
        MsgBox "Veuillez saisir votre Login !", vbOKOnly + vbExlamation, "Erreur ...!"
        Exit Sub
        End If
        
        If Me.TextBox2.Value = "" Then
        MsgBox "Veuillez saisir votre Mot de passe !", vbOKOnly + vbExlamation, "Erreur ...!"
        Exit Sub
        End If
        
    MDP = Application.WorksheetFunction.Index(Range("motdepasse"), Application.WorksheetFunction.Match(Me.TextBox1.Value, _
    Range("utilisateur"), 0), 1)
    
     If Me.TextBox2.Value <> MDP Then
    
     MsgBox "Votre mot de passe est incorrect !", vbOKOnly + vbCritical, "Erreur !"
    
        Else
        
        For Each Feuil In Sheets
        If Feuil.Name <> "Connexion" Then
        
           [COLOR=rgb(184, 49, 47)] If Application.WorksheetFunction.Index(Range("plage"), Application.WorksheetFunction.Match( _
            Me.TextBox1.Value, Range("utilisateur"), 0), Application.WorksheetFunction.Match(Feuil.Name, Range("entete"), 0)) = "oui"[/COLOR]
            
            Feuil.Visible = xlSheetVisible
            
            Else
            
            Feuil.Visible = xlSheetVeryHidden
        
        End If
        Next
     End If
    
    
End Sub
 

Fred0o

XLDnaute Barbatruc
Bonjour Jrmy34

Peut-être comme ceci :
VB:
Private Sub CommandButton1_Click()
    Dim Feuil As Worksheet
    Dim MDP
    On Error Resume Next
    If Me.TextBox1.Value = "" Then
        MsgBox "Veuillez saisir votre Login !", vbOKOnly + vbExlamation, "Erreur ...!"
        Exit Sub
    End If
    If Me.TextBox2.Value = "" Then
        MsgBox "Veuillez saisir votre Mot de passe !", vbOKOnly + vbExlamation, "Erreur ...!"
        Exit Sub
    End If
    MDP = Application.WorksheetFunction.Index(Range("motdepasse"), Application.WorksheetFunction.Match(Me.TextBox1.Value, _
    Range("utilisateur"), 0), 1)
    If Me.TextBox2.Value <> MDP Then
        MsgBox "Votre mot de passe est incorrect !", vbOKOnly + vbCritical, "Erreur !"
    Else
        For Each Feuil In Sheets
            If Feuil.Name <> "Connexion" Then
                If Application.WorksheetFunction.Index(Range("plage"), Application.WorksheetFunction.Match(Me.TextBox1.Value, Range("utilisateur"), 0), Application.WorksheetFunction.Match(Feuil.Name, Range("entete"), 0)) = "oui" Then
                    Feuil.Visible = xlSheetVisible
                Else
                    Feuil.Visible = xlSheetVeryHidden
                End If
            End If
        Next
     End If
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour
je ne vois pas la ligne en rouge mais je parierais a 10 contre 1 que c'est cette ligne qui plante
VB:
 MDP = Application.WorksheetFunction.Index(Range("motdepasse"), Application.WorksheetFunction.Match(Me.TextBox1.Value, _
    Range("utilisateur"), 0), 1)
cela dit un fichier avec quelque lignes comme exemple serait le bien venu
 

patricktoulon

XLDnaute Barbatruc
re
n'ayant pas ton classeur
je l'ai fat et testé dans un classeur neuf
j'ai bloqué les lignes que je ne peux pas tester
VB:
Private Sub CommandButton1_Click()
    Dim Feuil As Worksheet, MDP$, X&
     If Me.TextBox1.Value = "" Then MsgBox "Veuillez saisir votre Login !", vbOKOnly + vbExlamation, "Erreur ...!": Exit Sub
    If Me.TextBox2.Value = "" Then MsgBox "Veuillez saisir votre Mot de passe !", vbOKOnly + vbExlamation, "Erreur ...!": Exit Sub

    X = Application.IfError(Application.Match(Me.TextBox1.Value, Range("utilisateur"), 0), 0)    'on recherche l'utilisateur dans le range utilisateur
    If X = 0 Then MsgBox " le login est invalid!! veuillez recommencer!!": TextBox1 = "": TextBox2 = "": Exit Sub
    MDP = Application.Index(Range("motdepasse"), X, 1)

    If Me.TextBox2.Value <> MDP Then
        MsgBox "Votre mot de passe est incorrect !", vbOKOnly + vbCritical, "Erreur !": TextBox2 = ""
    Else
        'For Each Feuil In Sheets
            'If Feuil.Name <> "Connexion" Then
                'If Application.WorksheetFunction.Index(Range("plage"), Application.WorksheetFunction.Match(Me.TextBox1.Value, Range("utilisateur"), 0), Application.WorksheetFunction.Match(Feuil.Name, Range("entete"), 0)) = "oui" Then
                    'Feuil.Visible = xlSheetVisible
                'Else
                    'Feuil.Visible = xlSheetVeryHidden
                'End If
           ' End If
        'Next
    MsgBox "on est bon"
    End If
End Sub
 

jrmy34

XLDnaute Nouveau
Effectivement lol du code c'est rajouter pour colorer la ligne du coup ... pas de couleur.

Voici la ligne en rouge avec l'erreur mentionnée "Erreur de compilation, erreur de synthaxe"

VB:
If Application.WorksheetFunction.Index(Range("plage"), Application.WorksheetFunction.Match( _
            Me.TextBox1.Value, Range("utilisateur"), 0), Application.WorksheetFunction.Match(Feuil.Name, Range("entete"), 0)) = "oui"
 

Fred0o

XLDnaute Barbatruc
Effectivement lol du code c'est rajouter pour colorer la ligne du coup ... pas de couleur.

Voici la ligne en rouge avec l'erreur mentionnée "Erreur de compilation, erreur de synthaxe"

VB:
If Application.WorksheetFunction.Index(Range("plage"), Application.WorksheetFunction.Match( _
            Me.TextBox1.Value, Range("utilisateur"), 0), Application.WorksheetFunction.Match(Feuil.Name, Range("entete"), 0)) = "oui"
Bonjour jrmy34

As-tu testé ma proposition ?

Rajouter un "Then" à la fin de la ligne.