Modification VBA
Bonjour,
Quelqu'un peux m'aider de modifier le suivant fichier vba:
1. De mettre la fonction dans l'administration (Mot de passe: 1234) qu'on peux seulement editer le dernier Barcode dans la derniere ligne indiquer dans la listbox de la matière sélectionner.
2. La fonction que seulement les super Admins peuvent supprimer des lignes et editer tous les valeurs indiquer dans la listbox.
Merci pour votre aide.
Salut Jerry,
Salut le Forum,
Voici ton fichier modifié avec un mode "Super Admin" rajouter à ton Userform !
Je te laisse tester et revenir vers nous
Merci beaucoup,
Mais c'est possible que les admin peuvent justement editer la dernière Valeur dans la dernière ligne? (voir photo)
Ainsi que je supprime la ligne qui'il me recharge la listbox et qu'il doit rester dans la matière séléctionner!
Et encore une petite question c'est possible de controler l'accès "Super admin" par le nom d'utilisateur windows si p.ex. l'utilisateur "xy" et indentifier alors il a l'accès...
Re !
Alors pour ta première question [...]
Mais c'est possible que les admin peuvent justement editer la dernière Valeur dans la dernière ligne? (voir photo)
[...] c'est déjà le cas
Private Sub TextBox2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
If Me.OptionButton2 = False And _
ListBox1.ListIndex + 1 <> ListBox1.ListCount Then _
MsgBox "Nécessite d'activer le mode Super Admin !", vbExclamation, "Accès refusé": Exit Sub
End Sub
[...] tu peux voir que la modification se bloque si le mode "Super Admin" est désactivé ET SI la ligne est différente de la dernière ligne.
Et encore une petite question c'est possible de controler l'accès "Super admin" par le nom d'utilisateur windows si p.ex. l'utilisateur "xy" et indentifier alors il a l'accès...
Oui c'est possible de connaître l'utilisateur avec le code ci-dessous :
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Private Function NomUtilisateur() As String
Dim sUserName As String, iSize As Long
GetUserName sUserName, iSize
sUserName = Space(iSize)
GetUserName sUserName, iSize
NomUtilisateur = sUserName
End Function
Sub Test()
MsgBox NomUtilisateur
End Sub
A dispo!
@Juice Merci beaucoup tu es excellent
J'ai encore des petits soucis tu peus me mettre les Textbox1 ; 2 ; 4; 5 à un Label et me supprimer la Enreg Textbox
MERCI
Ehm,
With ListBox1
If .ListIndex <> -1 Then
Label7.Caption = .List(.ListIndex, 0)
End If
End With
Mais si je supprime maintenant la TEXTBox1 je reçois une erreur
Le plus facile c'est que tu peux me mettre le UserForm si je clique sur le bouton "Editer CodeBarre" alors une Input box ouvre avec le dernier Code tous en bas à droite dans la liste de la matière sélectionner. Et puis si je clique sur OK le code et modifier et la liste avec la matière sélectionner fait un "reload" où on peut voir toute suite le code barre éditer.
Si quelqu’un a l'accès du super admin alors on a le bouton "Editer ligne sélectionner" là on peut éditer les deux code barre de la ligne sélectionner de toutes la liste dans la matière sélectionner "de"...... et "jusqu'à" ....... Et puis si je clique sur OK le code et modifier et la liste avec la matière sélectionner fait un "reload" où on peut voir toute suite la ligne éditer.
Avec un autre bouton je peux ajouter seulement une Matière!
Les super Admin peuvent supprimer et éditer des Matières.
Si tu veux quelque chose pour ton travaille alors je peux te faire un Bon Cadeau chez Amazon
Re- Jerry,
Excuse moi pour le temps mais, au vue de tes demandes, j'ai préféré reprendre ton UserForm à zéro
Ci-dessous la liste des modifications apportées
Ajout d'une feuille des administrateurs
Donc je t'ai rajouté une "Feuil des Admin" où tu va recenser tout ceux pouvant avoir l'accès administreur (donc modif, édition et suppression) des barcodes
Grâce à ça, quand l'Userform va s'ouvrir, il va détecter automatiquement si l'utilisateur est un Admin, un Super Admin ou un simple utilisateur
Pour ajouter un Admin à cette feuille, je t'ai créé un nouvel Userform où l'ID du PC ce met automatiquement
Il te suffit ensuite de masquer la feuille des Admin, ou de protéger les modifs par un code
Le Mode Super Admin
Le mode Super Admin permet maintenant d'ajouter une matière, de supprimer une ligne ou d'éditer une ligne
La mise à jour ce fait automatiquement dans le classeur Excel et dans la ListBox
Le Mode Admin
Le Mode Admin n'affiche que le bouton "Édition de la dernière ligne affichée" mais je n'ai pas compris ce qu'il avait le droit de modifier par contre : La Matière ? Le "Barcode de" ? Le "jusqu'à" ? La colonne sans en-tête
Voilà, je te laisse tester (pense bien a te créer une ligne Admin pour pas être bloqué) et revenir vers moi pour les modifications ou les rajouts (il y a pas mal de trucs que tu peut mettre en plus, mais voyons déjà si ce que j'ai fais te conviens)
Si tu veux quelque chose pour ton travaille alors je peux te faire un Bon Cadeau chez Amazon
C'est très sympa de ta part mais on est sur un Forum gratuit donc bon
A dispo!
Boah super t'est vraiment un Expert au Vba j'ai déjà une mauvaise conscience devant toi...
Alors le admin a seulement le droit de modifier le dernier CodeBarre "Jusqu'à" dans la dernière ligne de la matière sélectionner.
Et il a le droit d'ajouter une nouvelle matière.
Au voler "Administration - Edition des barcodes" et au voler "Administrateur - Edition des barcodes" tu peux me mettre la somme totale des Barcodes de la matière sélectionner.
p.ex. de C000039500 et C000039620 = 121 Barcodes
de C000039500 et C000039636 = 137 Barcodes
Totales: 258
Si quelqu'un veut éditer un CodeBarre qui existe déjà entre une ligne des matières alors ce n’est pas possible! Chaque Barecode existe 1 fois p.ex. C000000001 - C0000000010 le C000000008 existe déjà dans une des matières.
L'indication du nombre de Barcode c'est un nombre fixe pas éditable il se calcule automatiquement normalement
Pour protéger les feuilles "Daten" et "Feuil des Admin" on peut insérer le code suivant?. Au Worksheet
Private Sub Worksheet_Activate()
If Environ("Username") <> "" Then
Sheets("Daten").Visible = xlSheetVeryHidden
Sheets("Feuil des Admin").Visible = xlSheetVeryHidden
End If
End Sub
Le fichier joint c'est le fichier avec les Barcodes originaux
MERCI BEAUCOUP ENCORE UNE FOIS POUR TON TRAVAILLE ET POUR TON AIDE!!!!
Re-
Ci-joint ton fichier modifié avec les commentaires de ton dernier post !
pardonne mes absences, mais on est sous l'eau au taff en ce moment
A dispo!
Merci beaucoup c'est ca que je veux
Mais c'est pas possible d'intégrer le script
Private Sub Worksheet_Activate()
If Environ("Username") <> "" Then
Sheets("Daten").Visible = xlSheetVeryHidden
Sheets("Tabelle1").Activate
End If
End Sub
Si je bloque les 2 feuilles c'est OK mais j'ai encore autre feuilles dans le même fichier qu'ils sont bloqué que autres personnes peuvent débloquer MAIS pas les 2 feuilles ils doivent rester bloqué!
Seulement 1 personne (1 ID) a l'accées aux 2 feuilles! Tous les autres feuilles restent invisible de la façon normale de microsoft office si on tappe le code il débloque les feuilles. Mais les autres 2 feuilles restent bloquer!
Re-
Bon je comprend pas vue que le classeur que j'ai ne fais que 2 feuilles, et je ne vois pas ce que tu veux masquer de plus :p
Mais voici un code qui protégera la feuille de ton choix, en placant le code directement dans le module de la feuille :
Private Sub Worksheet_Activate()
Dim sUserName As String, iSize As Long, Adm As Worksheet, c As Range, i As Long
ActiveSheet.Unprotect Password:="1234"
Cells.Font.ThemeColor = xlThemeColorDark1
For i = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes.Range(Array("Button " & i)).Visible = False
Next
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
GetUserName sUserName, iSize
sUserName = Space(iSize)
GetUserName sUserName, iSize
Set c = Sheets("Feuil des Admin").Columns(5).Find(sUserName)
If Not c Is Nothing Then
If Cells(c.Row, 8) = "Oui" Then
ActiveSheet.Unprotect Password:="1234"
Cells.Font.ColorIndex = xlAutomatic
For i = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes.Range(Array("Button " & i)).Visible = True
Next
GoTo ExitSub
End If
End If
On Error GoTo AccesDenied
If ActiveSheet.Unprotect = True Then
Cells.Font.ColorIndex = xlAutomatic
For i = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes.Range(Array("Button " & i)).Visible = True
Next
GoTo ExitSub
End If
AccesDenied:
MsgBox "Accès refusé !", vbCritical
ExitSub:
End Sub
Avec ce code, le contenu de la feuille est entièrement masqué (texte et bouton de commande), et il est impossible de modifier les cellules.
Il faut soit le code pour activer la feuille, soit avoir "Oui" dans la colonne "H" de la feuille "Feuil des Admin" pour que sa se délock automatiquement
Je te laisse tester le fichier ci-joint.
A dispo
Bon je vais modifier sa a mes besoin
Mais je marquer encore au voler "Recherche Barcode ou Matière" si tu inscris pas de Barcode et tu cliques sur "Cherchez" alors une erreur s'affiche.
Et tu peus me mettre encore si je fais des modification dans l'administration alors qu'il fait un reload du sub "Recherche Barcode ou Matière"
merci mille fois
1) Et que j'ai encore remarquer que c'est encore possible de de créer une deuxième Matière avec le même nom qu'il est déjà dans la liste! Sa se doit être PAS possible même pas pour le super Admin.
2) Et las possibilité d'inscrire un Barcode qu'il existe déjà dans la liste!
p.ex. si le Barcode de la matière1 commence par C000000001 et finit par C000000100 alors c'est plus possible d'inscrire un Barcode qui finit ou commence p.ex. par C000000050 parce qu'il est déjà dans 1 - 100. CHAQUE CODE EXISTE Q'UNE FOIS!
Il doit contrôler les listes des matière qu'ils sont déjà dans la base de données.