Incompatibilité de type erreur 13

Bonjour,

je rencontre une incompatibilité de type lorsque l'array contient une cellule ou moins,, je pense qu'il s'agit d'une histoire de conversion en string mais je ne vois pas trop par quel bout le prendre

Aussi quand il y a plus d'1 cellule dans le tableau et donc que cela "fonctionne", la msgbox s'ouvre plusieur fois (j'imagine qu'elle s'ouvre dès qu'elle ne reconnait pas le username sur chaque cellule du tableau), je souhaiterai qu'elle ne s'ouvre qu'une fois, j'ai testé le exit for après la condition mais cela ne donne pas le résultat souhaité.

Si vous pouviez m'aider.

Ci dessous le code

Merci d'avance

Option Explicit
Dim aut()
Dim derl%
Dim i As Integer
Sub autorisation_planning()
With ThisWorkbook.Worksheets("parametres")
derl = .Cells(Rows.Count, 8).End(xlUp).Row
aut = .Range("H2:H" & derl).Value
End With
For i = LBound(aut, 1) To UBound(aut, 1)
If aut(i, 1) <> "" And Environ("username") = aut(i, 1) Then
Worksheets("planning").Visible = True
Worksheets("planning").Activate
Else
Msgbox "Vous n'avez pas les autorisations requises"
End If
Next
End Sub

Bonjour,

Essaie ainsi :

Option Explicit

Sub Autorisation_Planning()
Dim Cell As Range, rng As Range
Dim n As Long, i As Long
    With ThisWorkbook.Worksheets("parametres")
        n = .Cells(.Rows.Count, 8).End(xlUp).Row
        Set rng = .Cells(2, 8).Resize(n - 1)
    End With
    For Each Cell In rng
        If Cell.Value = Environ("username") Then
            With ActiveWorkbook.Worksheets("planning")
                .Visible = True
                .Activate
            End With
            GoTo exit_Handler
        End If
    Next
    MsgBox "Vous n'avez pas les autorisations requises."
exit_Handler:
    Exit Sub
End Sub

Merci Jean-Eric

Je retrouve erreur 1004 sur la ligne

Set rng = .Cells(2, 8).Resize(n - 1)

Lorsque je n'ai pas de valeur dans les cellules

EDIT : j'ai remplacé ).Resize(n - 1) par ).Resize(n,1)

c'était une faute de frappe ou moi qui dit n'importe quoi ?

Re,

Rajoute donc une contrainte du type :

With ThisWorkbook.Worksheets("parametres")
        n = .Cells(.Rows.Count, 8).End(xlUp).Row
        If n=1 then 
             MsgBox "xxxxx"
             Exit Sub
         End If
         Set rng = .Cells(2, 8).Resize(n - 1)
    End With
Rechercher des sujets similaires à "incompatibilite type erreur"