webcosmopolite
XLDnaute Nouveau
Bonjour a tous
Dans un classeur partagé et dans une feuille vérrouillé je voudrais pouvoir supprimer une ligne.
Donc je suis passé par une macro qui détecte une sélection de ligne, une boite de dialogue s'affiche me demande si je veux supprimer -> Si oui me demande un mot de passe sinon la boite de dialogue disparait.
Si le mot de passe est bon il va départage le classeur avec le bon mot de passe et et déprotege la feuille avec un autre mot de passe puis supprime la ligne puis reprotège la feuille puis repartage le classeur.
Tout marche sauf que quand je quitte le fichier et que je reviens le classeur n'est pas du tout en partage ... une erreur quelque part ?
Sinon un autre petit problème : je voudrais qu'il m'affiche la boite de dialogue qu'avec le clique gauche donc sélectChange mais la quand je fait un click droit j'ai quand meme la boite de dialogue qui s'affiche ...
Sachant que je sélectionne la ligne en cliquant sur le numéro de ligne.
Donc voici le code :
Je suis encore un novice dans le VBA ...
Donc merci de votre aide !
P.S : j'utilise Excel 2010 & Windows XP Professionnel
Dans un classeur partagé et dans une feuille vérrouillé je voudrais pouvoir supprimer une ligne.
Donc je suis passé par une macro qui détecte une sélection de ligne, une boite de dialogue s'affiche me demande si je veux supprimer -> Si oui me demande un mot de passe sinon la boite de dialogue disparait.
Si le mot de passe est bon il va départage le classeur avec le bon mot de passe et et déprotege la feuille avec un autre mot de passe puis supprime la ligne puis reprotège la feuille puis repartage le classeur.
Tout marche sauf que quand je quitte le fichier et que je reviens le classeur n'est pas du tout en partage ... une erreur quelque part ?
Sinon un autre petit problème : je voudrais qu'il m'affiche la boite de dialogue qu'avec le clique gauche donc sélectChange mais la quand je fait un click droit j'ai quand meme la boite de dialogue qui s'affiche ...
Sachant que je sélectionne la ligne en cliquant sur le numéro de ligne.
Donc voici le code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Reponse As Integer
Dim Plage As Range 'Plage de lignes adjacentes
'Si 1 ou plusieurs lignes sont sélectionnées (lignes adjacentes car areas.count = 1)
If Target.Areas.Count = 1 Then
If Target.Address = Range(Rows(Target.Row), _
Rows(Target.Row + Target.Rows.Count - 1)).Address Then
Reponse = MsgBox("Voulez-vous supprimer la ligne " & Target.Row & " ?", vbYesNo)
If Reponse = vbYes Then 'Choix = supprimer
recom:
textetitre = Application.InputBox(Title:="Sécurité Logistique", _
Prompt:="Veuillez Saisir le code d'accès.")
If VarType(textetitre) = vbBoolean Then
Exit Sub
ElseIf textetitre = "123" Then
'Déprotection de la feuille
ActiveWorkbook.UnprotectSharing ("456")
ActiveSheet.Unprotect Password:="789"
'Suppression des lignes sélectionnées
Range(Rows(Target.Row), _
Rows(Target.Row + Target.Rows.Count - 1)).Delete
'Reprotection de la feuille
ActiveSheet.Protect Password:="789"
ActiveWorkbook.ProtectSharing SharingPassword:="456"
Else
msg = "Mot de passe Incorrect."
StyleBoîteDialogue = vbRetryCancel + vbQuestion
Title = "Accès Règlementés."
If MsgBox(msg, StyleBoîteDialogue, Title) = vbRetry Then
GoTo recom
End If
End If
ElseIf Reponse = vbNo Then
Exit Sub 'Quitte la macro
End If
End If
End If
End Sub
Je suis encore un novice dans le VBA ...
Donc merci de votre aide !
P.S : j'utilise Excel 2010 & Windows XP Professionnel
Dernière édition: