Sheets.activate // .select génère une erreur

Bonjour,

Je viens de créer un code VBA pour gérer l'accès a des feuilles sur un classeur Excel, mais une erreur apparait systématiquement et je ne trouve pas pourquoi ou une solution. C'est une erreur "Object reference not set to an instance of an object." & "Une exception est survenue. Envoyez le fichier journal ci-joint à votre administrateur. Le module complémentaire SAP BI va être fermé."

le code en question : (erreur sur l'instruction "ERREUR 1" et si je supprime cete ligne la même erreur apparait eu niveau "ERREUR 2")

Option Explicit

Private Sub Workbook_Open()

Dim UserWin As String

Dim Pointeur As String

Dim Derligne As Integer

Dim FeuilleVisible As String

Dim X As Integer

'on affiche la feuille Vierge

Sheets("Vierge").Visible = -1

'on va dessus

Sheets("Vierge").Select

Application.ScreenUpdating = False

'on defini un pointeur

Pointeur = 0

'on defini un utilisateur

UserWin = Environ("UserName")

'On Error Resume Next

'on planque toutes les autres

'For x = 1 To ThisWorkbook.Sheets.Count

' If Sheets(x).Name <> "Vierge" Then Sheets(x).Visible = xlSheetVeryHidden

'Next

Sheets("TRACKING FILE").Visible = 2

Sheets("ACTION LIST").Visible = 2

Sheets("DroitsUsers").Visible = 2

'Derniere ligne du tableau de la feuille DroitsUsers pour boucler dessus

Derligne = Sheets("DroitsUsers").Range("A" & Rows.Count).End(xlUp).Row

'on boucle pour trouver les occurences

On Error Resume Next

For X = 2 To Derligne

If Worksheets("DroitsUsers").Cells(X, 1).Value = UserWin Then

FeuilleVisible = Worksheets("DroitsUsers").Cells(X, 3).Value

Sheets(FeuilleVisible).Visible = -1

ERREUR 1 >> Sheets(FeuilleVisible).Select

'on se met un pointeur pour voir si on trouve quelque chose, si on trouve rien on quittera

Pointeur = Pointeur + 1

End If

Next X

If Pointeur = 0 Then

MsgBox "Utilisateur ou mot de passe non valide" & vbCrLf & vbCrLf & "Le fichier va se fermer", vbCritical + vbOKOnly, "Sécurité"

ActiveWorkbook.Close SaveChanges:=False

End If

'on planque la feuille Vierge

ERREUR 2 >> Sheets("Vierge").Visible = 2

Application.ScreenUpdating = True

End Sub

Please help, je comprends vraiement pas.....

Par avance merci

Bonjour et bienvenu sur le forum,

ça ne sert à rien le code pour déboguer s'il n'y a pas de fichier qui va avec. Il faut joindre le fichier Excel.

Heu oui effectivement c'est plus facile avec un fichier.

En pièce jointe donc le fichier qui pose problème.

Il faut par contre ajouter votre nom de user windows sur la page "Droits User" pour le tester.

Merci

PS : pensez a stopper la macro à l'affichage du message "Utilisateur......"

2015 09 07 10 03 55
10tracking-test.xlsm (72.61 Ko)

Re,

A tout hasard, met la valeur en "True" les onglets que tu veux afficher. Car je n'arrive pas exploiter ton fichier.

Re,

C'était comme ça initialement mais ca ne change pas le problème.

J'ai mis les valeurs numériques -1 0 et 2 pour voir si cela changait la donne.

L'erreur apparait toujours sur l'action "Sheets(FeuilleVisible).Select"

et sinon, tu n'arrive pas à l'ouvrir ou a le faire fonctionner avec ton user win ?

Le code récupère ton logon windows avec la fonction environ("username") pour vérifier le droit d'accès dans l'onglet DroitsUsers

Bonjour,

Pas de plantage chez moi.

De toute façon ton Sheets(FeuilleVisible).Select est inutile. Ca ne sert à rien de sélectionner les feuilles une par une au fur et à mesure que tu les rends visibles. Active juste celle que l'utilisateur doit avoir sous les yeux à l'ouverture.

Comme c'est ton module SAP qui plante, ça va être difficile de savoir pourquoi sans l'avoir (et sans doute est-il protégé en plus...)

Tu peux tenter de mettre au début :

Application.EnableEvents = True

et avec False à la fin

pour l'empêcher d'intervenir sur les événements.

Je redépose ton fichier un peu modifié pour permettre son accès à tout le monde.

eric

13tracking-test.xlsm (65.58 Ko)

Ok ok merci pour tes remarques.

Je viens de tester l'ajout de Application.EnableEvents = True/false.

Malheureusement le problème persiste. et avec ton fichier l'erreur apparait maintenant au niveau de la ligne Worksheets("DroitsUsers").Select que tu as ajoutée.....

Je ne comprend vraiment pas pourquoi le fichier tente de faire qqch avec un module externe (SAP ici).

Aucune ligne ou action ne mène à ça pour moi.... Je sèche complètement sur ce problème..

Pas d'autres idées ? ou une toute autre manière de faire pour éviter ça ?

Si tu n'as pas besoin de ce module SAP pour ce fichier désactive-le temporairement dans Fichier/Options/Compléments.

Et va sur leur site voir s'il n'y a pas une version plus récente.

eric

Merci Eriiic,

J'ai supprimé les opérations inutiles et désactivé le module en question.

Ca fonctionne correctement maintenant.

Je penses que le module SAP n'est pas stable et générait une erreur de manière un peu aléatoire, donc en réalité rien a voir avec le code en lui même.

Problème résolu

Merci bien

Rechercher des sujets similaires à "sheets activate select genere erreur"