PB BLOCAGE barre d'outils Excel

Bonjour,

J'ai développé ce petit programme pour de la double saisie. Cela fonctionne bien sur mon PC.

Mais au bureau sur d'autres PC, lorsque l'on s'identifie par l'identifiant "administrateur" (apparition de toutes les feuilles), la barre d'outils se gèle et devient inaccessible. ceci uniquement pour cet identifiant. Par contre, si on s'en dégage en clickant sur "fin", et on s'identifie avec un code identifiant exemple 1927 (liste code localisée en AA4 et AB4 feuille saisie 1 traitée) et bien on a acces à tout comme normalement.

Pouvez vous me dire pourquoi ? et comment remédier à cela ?

1- est ce la boucle :

While GetAsyncKeyState(&H23) = 0

DoEvents

Wend

qui peut gèner ?

2- ou bien faut il réanimer certaines fonctions sur les PC incriminés ?

merci beaucoup pour votre aide,

jerome

Edit Dan : enlevé mot URGENT dans titre du sujet

Bonjour,

C'est quoi le caractère 35 (&H23) ?

A quoi te sert ce code dans le mode administration ? Je t'avoue que je ne vois pas l'intéret, car je ne sais pas ce que tu veux faire.

While GetAsyncKeyState(&H23) = 0

DoEvents

Wend

Quand tu dis barre d'outils, tu veux parler du ruban ? Aucun bouton ne fonctionne pas ou simplement ceux de compléments ?

J'aimerais que tu m'explique la nécessité de la boucle While...Wend, et pourquoi le programme relance la macro en récursivité "Identification" en fin de procédure "administration"... Le résultat est qu'Excel tourne en permanence, tu peux le voir dans le gestionnaire des taches, ce qui n'est pas normal du tout. Une fois l'utilisateur identifié, il faut sortir du programme, donc ne pas réexcuter la macro "identification" à la fin du mode administrateur.

Après, si cela entraine un autre problème lié aux autorisations du mode administrateur, il faut le régler d'une autre façon.

A+

Benoît Marchand

[Benead]

A+

B

Bonjour,

Merci pour ta réponse.

En fait, ce que je cherche c'est en se connectant avec l'identifiant administrateur que le programme s'arrête pour avoir la main libre et :

1- afficher de toutes les feuilles de saisie,

2- avoir la main libre sur les 4 feuilles de saisie pour pouvoir les geler par la suite après vérification de la double saisie,

3- puis que l'utilisateur ferme le classeur quand il le souhaite

initialement le While GetAsyncKeyState(&H23) = 0 me permet de faire une boucle en attendant que l'utilisateur fasse les étapes de vérification et gel des 4 feuilles et l'appui sur la touche "fin" du clavier, cache à nouveau toutes les feuilles et permet de revenir à l'état initial comme si on venait d'ouvrir le classeur. C'est pendant cette boucle que la barre d'outils n'est plus accessible et reste dans la dernière sélection avant de rentrer dans le mode administrateur. Mais j'ai lu hier soir que DOEVENTS pouvait bloquer la barre d'outils. En fait, je vois toute la barre d'outils mais je n'ai acces à aucun des outils ou menus de la barre.

Mais je n'ai peut être pas la bonne solution... comment puis je avec le code administrateur

1- afficher donc les 4 feuilles de saisie

2- avoir la main sur ces feuilles pour les geler

3- et ensuite laisser l'utilisateur fermer le classeur

je n'arrive pas à le faire sans une boucle qui tourne sur elle même car sinon le programme enchaine sur les lignes après l'appel du sub admnistration sans me laisser la main...; Si tu vois une solution pour "sortir" du programme dans le mode administrateur ? iun exit sub suffirait ? je suis preneur d'une solution...

Merci beaucoup,

Bonjour,

Tu n'as pas répondu à mes questions :

Quand tu dis barre d'outils, tu veux parler du ruban ? Aucun bouton ne fonctionne pas ou simplement ceux de compléments ?

Ces questions sont importante pour bien comprendre ton problème et mieux y répondre.

Pour moi, il ne pas utiliser la procédure "administration", tu la remplaces à l'ouverture du classeur par :

Private Sub Workbook_Open()
   Application.OnKey "{END}", "identification"

Application.OnKey permet de lancer une procédure à l'appui de la combinaison de touches concernées (FIN dans ton cas). Voir l'aide avec F1. Cela veut dire qu'a chaque fois que tu vas appuyer sur FIN, la procédure "identification" va s'exécuter.

Ensuite il faut modifier la procédure identification pour que le code s'exécute selon ton besoin. Par exemple de cette manière :

Sub identification()
   Dim D As Worksheet

   Application.EnableEvents = False

   ' test la saisie pour voir si elle correspond à un code et associe le nom dans la variable Nom1
   'sinon sort du programme
10 Saisie = InputBox("Tapez votre mot de passe", "identifiant")

   If Saisie = "administrateur" Then
      '  Call administration
      Sheets("SAISIE 1 Traité M1M2M3").Visible = True
      Sheets("SAISIE 1 Témoin M1M2M3").Visible = True
      Sheets("SAISIE 2 Traité M1M2M3").Visible = True
      Sheets("SAISIE 2 Témoin M1M2M3").Visible = True
   Else
      Sheets("SAISIE 1 Traité M1M2M3").Visible = False
      Sheets("SAISIE 1 Témoin M1M2M3").Visible = False
      Sheets("SAISIE 2 Traité M1M2M3").Visible = False
      Sheets("SAISIE 2 Témoin M1M2M3").Visible = False
      For i = 4 To 13
         If Saisie = Sheets("SAISIE 1 Traité M1M2M3").Range("AA" & i).Value Then
            Nom1 = Sheets("SAISIE 1 Traité M1M2M3").Range("AB" & i).Value
         End If
      Next i
      If Nom1 = "" Then
         MsgBox ("Désolé, votre identifiant est incorrect")
         GoTo 10
      End If
   End If

   Application.EnableEvents = True

End Sub

A+

Benoît Marchand

[Benead]

Bonjour,

merci beaucoup ! j'essaie ta solution ce soir et te tiens au courant.

concernant la barre d'outils c'est l'ensemble ruban + compléments.

jerome

Bonjour,

cela marche !

merci beaucoup Benead !

Bonne journée,

jerome

Rechercher des sujets similaires à "blocage barre outils"