Supprimer lignes spécifiques dans les fichiers d'un répertoire
Résolu/Fermé
dianedg
Messages postés
22
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
19 juillet 2016
-
5 déc. 2015 à 09:26
dianedg Messages postés 22 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 19 juillet 2016 - 6 déc. 2015 à 22:45
dianedg Messages postés 22 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 19 juillet 2016 - 6 déc. 2015 à 22:45
A voir également:
- Supprimer lignes spécifiques dans les fichiers d'un répertoire
- Impossible de supprimer un fichier - Guide
- Comment supprimer une page dans word - Guide
- Supprimer compte instagram - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 5/12/2015 à 10:40
Modifié par michel_m le 5/12/2015 à 10:40
bonjour Diane
Sur quelle feuille des classeurs non_read ?
Il y a t'il une ligne d'ent^tes dans les classeurs no_read ?
d'avance merci
Michel
Sur quelle feuille des classeurs non_read ?
Il y a t'il une ligne d'ent^tes dans les classeurs no_read ?
d'avance merci
Michel
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 5/12/2015 à 12:40
Modifié par michel_m le 5/12/2015 à 12:40
OK, j'ai fait la recherche sans m'occuper de l'ent^te en remontant dans les lignes
le classeur collecteur dans lequel se trouve la macro se trouve en dehors du répertoire des "no read"
je n'ai pas testé s'il fallait tenir compte de la casse (majuscules-minuscules)
proposition:
tu dis...
Michel
le classeur collecteur dans lequel se trouve la macro se trouve en dehors du répertoire des "no read"
je n'ai pas testé s'il fallait tenir compte de la casse (majuscules-minuscules)
proposition:
Option Explicit
'---------------
Sub supprimer_no_read()
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Dim Fich As String, Nbre As Integer, Cptr As Integer, Lig As Integer
Application.ScreenUpdating = False
'------------------choix du répertoire à scanner
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
'MsgBox Chemin
If Chemin = "" Then GoTo err1
'-------------parcours les classeurs du répertoire
ChDir Chemin
Fich = Dir("*.xlsx")
While Fich <> ""
Workbooks.Open Filename:=Chemin & "\" & Fich
'cherche les "no read" dans la colonne C
With Sheets(1)
Nbre = Application.CountIf(.Columns("C"), "No READ")
' "noread' trouvé dans une ligne---> suppression ligne
For Cptr = 1 To Nbre
Lig = .Columns("C").Find(what:="NO READ", searchdirection:=xlPrevious).Row
Rows(Lig).Delete
Next
'sauvegarde si "noread" trouvé(s) et fermeture classeur actif
With ActiveWorkbook
If Not .Saved Then: .Save
.Close
End With
End With
Fich = Dir
Wend
Exit Sub
'----------------gestionnaire erreurs
err1:
MsgBox " répertoire inconnu", vbCritical
End Sub
tu dis...
Michel
dianedg
Messages postés
22
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
19 juillet 2016
1
5 déc. 2015 à 14:05
5 déc. 2015 à 14:05
je viens de tester, ça ne fonctionne pas :-(
Le nom de la feuille est en fait le nom du fichier.
Voici le code que j'avais commencé (grâce à des bouts d'exemples trouvés sur internet), qui ne fonctionne pas non plus, je peux sélectionner le répertoire, les fichiers "semblent" s'ouvrir et se fermer et il me dit "terminé" à la fin mais lorsque je ré-ouvre les fichiers, il y a toujours les lignes contenant un "NO READ".
je ne trouve pas le problème...
Le nom de la feuille est en fait le nom du fichier.
Voici le code que j'avais commencé (grâce à des bouts d'exemples trouvés sur internet), qui ne fonctionne pas non plus, je peux sélectionner le répertoire, les fichiers "semblent" s'ouvrir et se fermer et il me dit "terminé" à la fin mais lorsque je ré-ouvre les fichiers, il y a toujours les lignes contenant un "NO READ".
je ne trouve pas le problème...
Sub SupprimerNoREAD()
'creation de la liste des fichiers contenu dans le repertoire qui contient ce même fichier
Dim Chemin As String, Fichier_xlsx As String, CompteurDeFichier As Integer
Dim MessageFinDeTraitement As String, MaFeuille As Worksheet
Dim Repertoire As FileDialog, Chemin_et_Fichier As String
'fige ecran
Application.ScreenUpdating = False
'Selection d'un repertoire
Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
Repertoire.Show 'boite a dialogue choix repertoire
If Repertoire.SelectedItems.Count > 0 Then 'choix ok
Chemin = Repertoire.SelectedItems(1)
Fichier_xlsx = Dir(Chemin & "\*.xlsx") 'recupération 1er fichier .xslx
If Fichier_xlsx <> Empty Then 'fichier xlsx existe
Do While Fichier_xlsx <> Empty 'boucle tant que fichier xlsx existe
'-------------------- Traitement fichier xlsx----------------------
Call SupprimerNoREAD_Traitement(Chemin, Fichier_xlsx)
'---------------------------------------------------------------------------------------------
Fichier_xlsx = Dir ' suivant
Loop
Msg = "Terminé"
Else
Msg = "Aucun Fichier trouvé dans le répertoire " & Chemin & " ! "
End If
MsgBox Msg
Else 'choix pas ok
MsgBox "Aucun Répertoire Sélectionné"
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
Sub SupprimerNoREAD_Traitement(Chemin, Fichier_xlsx)
Dim der As Long
Dim i As Long
'ouverture fichier xlsx
Workbooks.Open Filename:=Chemin & "\" & Fichier_xlsx, Local:=True
With ActiveWorkbook.ActiveSheet
'Sélection d'une colonne
der = Range("C65536").End(xlUp).Row
For i = der To 1 Step -1
If Range("C" & i) = "NO READ" Then Rows(i).Delete
Next i
'sauvegarde en xlsx
ActiveWorkbook.Save
End With
ActiveWorkbook.Close False 'fermeture fichier
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
5 déc. 2015 à 14:46
5 déc. 2015 à 14:46
Comme d'hab, J'avais essayé sur une maquette et c'était OK
comme c'est le faux nom de la feuille que tu m'avais communiqué qui était faux
j'ai modifié le code
Déclare au début macro folio en string
j'ai essayé et ça marche
comme c'est le faux nom de la feuille que tu m'avais communiqué qui était faux
j'ai modifié le code
While Fich <> ""
Workbooks.Open Filename:=Chemin & "\" & Fich
'cherche les "no read" dans la colonne C
folio = Left(Fich, Len(Fich) - 5)
With Sheets(folio)
Déclare au début macro folio en string
j'ai essayé et ça marche
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
5 déc. 2015 à 15:00
5 déc. 2015 à 15:00
ci joint maquette de travail
http://www.cjoint.com/c/ELfn577CNdG
http://www.cjoint.com/c/ELfn7I212NG (il faut dézipper et non ouvrir directement)
http://www.cjoint.com/c/ELfn577CNdG
http://www.cjoint.com/c/ELfn7I212NG (il faut dézipper et non ouvrir directement)
dianedg
Messages postés
22
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
19 juillet 2016
1
5 déc. 2015 à 21:06
5 déc. 2015 à 21:06
Bonne et mauvaise nouvelle. J'ai testé la maquette, ça marche parfaitement avec tes fichiers :-) J'ai donc ajouté les miens à la suite dans le dossier dézipper, remis des NO READ dans tes fichiers aaa et bbb pour tester. Les NO READ dans aaa et bbb sont bien supprimés avec la macro, mais pas ceux dans mes fichiers :-(
Du coup je me demande si mes fichiers n'ont pas un pb.
En voici un en exemple en PJ si ça peut aider: https://www.cjoint.com/c/ELfubbY5StM
Pour info, à la base ce sont des fichiers csv transformés par macro en xlsx.
Merci d'avance si tu peux encore m'aider!
Du coup je me demande si mes fichiers n'ont pas un pb.
En voici un en exemple en PJ si ça peut aider: https://www.cjoint.com/c/ELfubbY5StM
Pour info, à la base ce sont des fichiers csv transformés par macro en xlsx.
Merci d'avance si tu peux encore m'aider!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
6 déc. 2015 à 08:32
6 déc. 2015 à 08:32
Bonjour
dans la feuille tu as un esapce devant NO READ (vérif avec nbcar=8 au lieu de 7) donc... met un espace devant NO READ dans la macro
dans la feuille tu as un esapce devant NO READ (vérif avec nbcar=8 au lieu de 7) donc... met un espace devant NO READ dans la macro
dianedg
Messages postés
22
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
19 juillet 2016
1
6 déc. 2015 à 22:45
6 déc. 2015 à 22:45
Ah oui effectivement...je suis vraiment une débutante... Et maintenant ça fonctionne nickel (les 2 macros) :-) merci pour ton aide !
5 déc. 2015 à 11:18
Et oui, il y a une ligne d'entête à chaque fois
Merci pour votre aide