Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2914 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] [VBS] copier uniquement les lignes filtrées sous Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] [VBS] copier uniquement les lignes filtrées sous Excel

n°1907534
-BøB-
Posté le 22-07-2009 à 10:38:34  profilanswer
 

Bonjour à tous,
 
Dans le cadre de mon stage je dois réaliser un script en VBS. Je n'utilise ce langage que depuis quelques jours.
Je dispose d'un fichier Excel recensant toutes les permissions sur les dossiers d'un serveur de stockage. Mon objectif est d'utiliser ce fichier afin de mettre à jour les permissions pour chaque utilisateur. En effet le nom des utilisateurs va changer, ce qui supprimera leurs permissions personnelles.
 
Chaque ligne comprend ses informations:
chemin du dossier, nom de compte, droits
 
Mon script fonctionne si je parcours toutes les lignes.Il récupère les informations de l'utilisateur souhaité et va mettre à jour les permissions en appelant un autre script fait par Microsoft : xcacls.vbs. Mais étant donné que le fichier fait environ 60000 lignes j'aimerais optimiser le traitement en filtrant uniquement l'utilisateur sur lequel je souhaite mettre à jour les permissions. Puis récupérer les informations uniquement des lignes filtrées.
 
Je réussi à filtrer avec ce code là:
Feuille_XLS.Range("B2" ).AutoFilter 2, OldUser  
 
(OldUser étant le nom de compte sur lequel on souhaite récupérer les permissions)
 
Ensuite je suis bloqué. J'ai parcouru les différents sujets sur internet, tester plusieurs choses mais je n'arrive pas à travailler uniquement sur les lignes visibles (je ne réussi pas à utiliser SpecialCells(xlTypeVisible) par exemple). De plus on ne trouve presque uniquement des informations pour VBA, et j'ai du mal à distinguer ce qui est pareil ou différent en VBS :/
 
Auriez vous une solution qui au choix:
- me permettrait de parcourir uniquement les lignes visibles
- me permettrait de copier les lignes visibles sur une nouvelle feuille.
 
Je vous remercie pour votre aide,
 
Cordialement,
 
-BøB-


Message édité par -BøB- le 23-07-2009 à 09:44:36
mood
Publicité
Posté le 22-07-2009 à 10:38:34  profilanswer
 

n°1907666
SuppotDeSa​Tante
Aka dje69r
Posté le 22-07-2009 à 15:32:58  profilanswer
 

Bonjour
 
Le souci c'est que les lignes existent encore. Elles sont justes masquées.
 
Une solution simple, mais sale serait dans un premier temps d'exclure les lignes qui ont une hauteur = 0
 
Le mieux, c'est d'appliquer ton filtre, tout selectionner, copier dans un nouvel onglet, et faire ta recherche la dedans.
 
Le SpecialCells ne va pas t'avancer beaucoup, enfin avec mes connaissances de la chose. Parceque meme si tu recuperes le range de la zone filtrée, ca te servira a rien. (Sauf si les infos sont toutes a la suite pour la meme personne/user et encore)
 
Feuille_XLS <(--- c'est ton objet Excel ?
 
Edit : On va dire que oui

Code :
  1. Set Feuille_XLS = CreateObject("Excel.Application" )
  2. Feuille_XLS.Sheets(1).Select
  3. Feuille_XLS.Cells.Select
  4. Feuille_XLS.Selection.Copy
  5. Feuille_XLS.Sheets.Add
  6. Feuille_XLS.ActiveSheet.Paste
  7. Feuille_XLS.Range("A1" ).Select


Message édité par SuppotDeSaTante le 22-07-2009 à 15:40:00

---------------
Soyez malin, louez entre voisins !
n°1907824
-BøB-
Posté le 23-07-2009 à 08:42:58  profilanswer
 

Merci pour ta réponse dje69r.  
J'ai trouvé une solution qui marche juste un peu avant que tu répondes. Elle revient au même que toi finalement. Au début je croyais que si je copiais toute ma feuille, il prenait aussi les cellules cachées. Je me suis embété à chercher compliquer pour rien finalement ^^
 
Feuilles_XLS c'était une feuille de excel.
 
Voici mon code final:

Code :
  1. Dim Fichier_XLS,nom_fichier
  2. Fichier_XLS = "E:\tools\Diffuser\Migration\dump_data.xls"
  3. nom_fichier="dump_data"
  4. set xlapp = WScript.CreateObject("EXCEL.application" )
  5. xlapp.Visible = True
  6. xlapp.workbooks.open   Fichier_XLS
  7. Set feuille_origine = xlapp.Worksheets(nom_fichier)
  8. Set Feuille_trie= xlapp.Worksheets.add
  9. feuille_origine.Range("B2" ).AutoFilter 2, OldUser
  10. feuille_origine.Cells.EntireRow.Copy
  11. Feuille_trie.Paste


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] [VBS] copier uniquement les lignes filtrées sous Excel

 

Sujets relatifs
Copier données d'une feuille dans un classeur donné.Excel: boucle pour plusieurs commandbutton
Lister fichiers sur répertoire racine uniquementproblème de filtre vba macro Excel
Extraire un formaulaire dans un tableau sur Excel Pattern Java | Probleme ecriture dans fichier texte.
[VBA][Résolu] Completer une feuille type[résolu]recherche dans un fichier encodé en utf8
[Résolu][Perl] Chaine entre 2 délimiteursgros fichier excel copier et inserer des lignes
Plus de sujets relatifs à : [RESOLU] [VBS] copier uniquement les lignes filtrées sous Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR