Gestion d'une liste de droit

heritias

XLDnaute Nouveau
Bonjour,
je dispose actuellement d'un fichier concernant des droits sur l'ensemble des répertoires d'un disque .Les groupes de droit ayant changé récemment je doit faire un peu de menage . l'option rechercher / supprimer / décaler vers la gauche fonctionne bien manuellement mais vu l'ampleur du tableau je desespere de le faire à la main.
Voici donc en piece jointe un exemple de fichier ainsi que les 2 conditions que je souhaite réaliser par macro .
Condition 1:
SI dans la zone C1 à F9 je trouve aaa000000:HRG_GROUPE 1:LECTEUR et aaa000000:HRG_GROUPE 5:LECTEUR
Je supprime aaa000000:HRG_GROUPE 5:LECTEUR et decale la cellule vers la gauche.
condition 2:
Si dans la zone c1 à f9 je trouve aaa000000:HRG_GROUPE 1:LECTEUR et *:HRG_*:LECTEUR Je supprime *:HRG_*:LECTEUR et decale la cellule vers la gauche

Les conditions se trouvant sur la feuille 2.

En realité mon fichier comporte 24000 lignes et la zone commence en c1 et se termine en DP24000

je vous remercie par avance de votre aide . Ne connaissant pas VBA et n'arrivant pas à le faire par formule j'ai reellement besoin de votre aide. j'ai bien evidemment fait des recherches dans les discussions en cours mais j'ai trouvé beaucoup de suppression de ligne mais pas de cellule.

bonne journée
 

Pièces jointes

  • Gestion des autorisations.xlsx
    11.2 KB · Affichages: 59

pierrejean

XLDnaute Barbatruc
Re : Gestion d'une liste de droit

Bonjour heritias

A tester:

VB:
Sub supprime()
Set c = ActiveSheet.Range("C1:DP24000").Find("aaa000000:HRG_GROUPE 1:LECTEUR", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
   firstAddress = c.Address
    Do
      For n = 3 To 6
        If Cells(c.Row, n) = "aaa000000:HRG_GROUPE 5:LECTEUR" Or Cells(c.Row, n) = "*:HRG_*:LECTEUR" Then
           Cells(c.Row, n).Delete Shift:=xlToLeft
        End If
      Next n
      Set c = ActiveSheet.Range("C1:F9").FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
 

heritias

XLDnaute Nouveau
Re : Gestion d'une liste de droit

Bonjour cela fonctionne parfaitement pour la condition 1 en revanche j'ai du mal m'exprimer pour la condition 2 je ne recherche pas la zone *:HRG_*:LECTEUR , le signe * est là pour faire un filtre .
Si aaa000000:HRG_GROUPE 1:LECTEUR existe et aaa000000:HRG_GROUPE 2:LECTEUR existe il faut supprimer "aaa000000:HRG_GROUPE 2:LECTEUR" en revanche j'ai une multitude de groupe et le fait de faire un filtre sur *:HRG_*:LECTEUR en ne gardant que ce masque cela permettrai de supprimer tous les groupes . j'espere avoir etait plus clair dans mes explications .
Et merci beaucoup pour cette solution je peux dejà commencer un premier "ménage" .
bonne journée
 

pierrejean

XLDnaute Barbatruc
Re : Gestion d'une liste de droit

Re

A tester , en supposant que cette fois j'aie bien compris

VB:
Sub supprime()
Set c = ActiveSheet.Range("C1:DP24000").Find("aaa000000:HRG_GROUPE 1:LECTEUR", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
   firstAddress = c.Address
    Do
      For n = 3 To 120
         If n <> c.Column And InStr(Cells(c.Row, n).Value, ":HRG_") <> 0 And InStr(Cells(c.Row, n).Value, ":LECTEUR") <> 0 Then
           Cells(c.Row, n).Interior.ColorIndex = 3
        End If
      Next n
      Set c = ActiveSheet.Range("C1:DP24000").FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
End If
For n = 120 To 3 Step -1
  For m = 24000 To 1 Step -1
    If Cells(m, n).Interior.ColorIndex = 3 Then Cells(m, n).Delete shift:=xlShiftToLeft
  Next m
Next n
End Sub
 

heritias

XLDnaute Nouveau
Re : Gestion d'une liste de droit

Cela semble fonctionner parfaitement , c'est l'association qui va etre contente . Merci beaucoup de tout ce temps gagné. Bonne journée à vous .
Je vais maintenant décortiquer le code afin de comprendre et pouvoir le reutiliser pour d'autre choses . encore merci de la rapidite de votre réponse et de l'aide apportée .
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed