Suppression de ligne contenant une valeur
MomoAbou
-
MomoAbou -
MomoAbou -
Bonjour à tous,
j'ai un petit problème (sur fichier CSV).
Je dispose de 100 Fichiers dans un répertoire, tous au même Format, une seule feuille pour chaque fichier mais de nom différent d'un fichier à l'autre
Je voudrais qu'à chaque fois qu'on rencontre "Open" dans la colonne B, qu'on supprime la ligne correspondante et ceci pour tous les fichiers.
Est ce que ceci est faisable sur CSV?
Merci par avance.
Momo
j'ai un petit problème (sur fichier CSV).
Je dispose de 100 Fichiers dans un répertoire, tous au même Format, une seule feuille pour chaque fichier mais de nom différent d'un fichier à l'autre
Je voudrais qu'à chaque fois qu'on rencontre "Open" dans la colonne B, qu'on supprime la ligne correspondante et ceci pour tous les fichiers.
Est ce que ceci est faisable sur CSV?
Merci par avance.
Momo
A voir également:
- Suppression de ligne contenant une valeur
- Forcer suppression fichier - Guide
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Formulaire en ligne de meta - Guide
4 réponses
Bonjour MomoAbou, bonjour le forum,
Le code ci-dessous devrait faire l'affaire. Sans fichier exemple je ne peux pas faire beaucoup mieux. N'oublie de modifier le chemin d'acces CH!...
Le code ci-dessous devrait faire l'affaire. Sans fichier exemple je ne peux pas faire beaucoup mieux. N'oublie de modifier le chemin d'acces CH!...
Sub Macro1() Dim CH As String 'déclare la variable CH (CHemin d'accès) Dim FICH As String 'déclare la variable FICH (FICHier) Dim CO As Workbook 'déclare la variable CO (Classeur Ouvert) Dim OO As Worksheet 'déclare la variable OO (Onglet Ouvert) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim I As Integer 'déclare la variable I (Incrément) CH = "ecrire ici le chemin d'accès complet au dossier spécifié" 'exemple CH = "C:\Users\Robert\Documents\Tests\" FICH = Dir(CH) 'définit la variable FICH (1er fichier du dossier indiqué par CH) Do While FICH <> "" 'boucle tant que FICH n'est pas vide If UCase(Right(FICH, 4)) = ".CSV" Then 'condition : si le fichier a une extension ".csv" ou ".CSV" Workbooks.Open CH & "\" & FICH 'ouvre le classeur Set CO = ActiveWorkbook 'définit le classeur ouvert CO Set OO = CO.Sheets(1) 'définit l'onglet ouvert OO DL = OO.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée de la colonne B de l'onglet ouvert OO For I = DL To 1 Step -1 'boucle inversée de la dernière ligne Dl à la première If UCase(OO.Cells(I, 2).Value) = "OPEN" Then OO.Rows(I).Delete 'condition si la cellule en colonne 2 (=B) de la ligne contient "OPEN" (quelle que soit la casse), supprime la ligne Next I 'prochaine ligne de la boucle inversée CO.Close True 'ferme le classeur en enregistrant les modification faites End If 'fin de la condition FICH = Dir 'passe au fichier suivant... Loop 'boucle End Sub
Bonjour Momoabou, bonjour le forum,
Le code ci-dessous s'applique aux fichiers csv où tout le texte est contenu dans la première colonne. Pour éviter les catastrophes je te recommande de faire une copie de sauvegarde du dossier complet au cas ou le résultat de la macro ne correspondrait pas à tes désir. Ça risque de mouliner pas mal à l'exécution et ça peut prendre pas mal de temps... À tester.
Pense à modifier la ligne du code avec ton chemin d'accès à toi
Le code ci-dessous s'applique aux fichiers csv où tout le texte est contenu dans la première colonne. Pour éviter les catastrophes je te recommande de faire une copie de sauvegarde du dossier complet au cas ou le résultat de la macro ne correspondrait pas à tes désir. Ça risque de mouliner pas mal à l'exécution et ça peut prendre pas mal de temps... À tester.
Pense à modifier la ligne du code avec ton chemin d'accès à toi
Sub Macro1() Dim CH As String 'déclare la variable CH (CHemin d'accès) Dim FICH As String 'déclare la variable FICH (FICHier) Dim CO As Workbook 'déclare la variable CO (Classeur Ouvert) Dim OO As Worksheet 'déclare la variable OO (Onglet Ouvert) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim I As Integer 'déclare la variable I (Incrément) CH = "ecrire ici le chemin d'accès complet au dossier spécifié" 'exemple CH = "C:\Users\Robert\Documents\Tests\" FICH = Dir(CH) 'définit la variable FICH (1er fichier du dossier indiqué par CH) Do While FICH <> "" 'boucle tant que FICH n'est pas vide If UCase(Right(FICH, 4)) = ".CSV" Then 'condition : si le fichier a une extension ".csv" ou ".CSV" Workbooks.Open CH & "\" & FICH 'ouvre le classeur Set CO = ActiveWorkbook 'définit le classeur ouvert CO Set OO = CO.Sheets(1) 'définit l'onglet ouvert OO DL = OO.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne B de l'onglet ouvert OO For I = DL To 1 Step -1 'boucle inversée de la dernière ligne Dl à la première 'si dans le texte en colonne 1 le mot "Open" existe, efface la ligne If InStr(1, OO.Cells(I, 1).Value, "Open") <> 0 Then OO.Rows(I).Delete Next I 'prochaine ligne de la boucle inversée CO.Close True 'ferme le classeur en enregistrant les modification faites End If 'fin de la condition FICH = Dir 'passe au fichier suivant... Loop 'boucle End Sub
merci beaucoup, je teste ça et vous fais un retour. Merci beaucoup d'avance.
Momo
J'ai fait un premier Test mais rien ne se passe apparemment même je n'ai pas non plus de message d'erreur.
Un fichier exemple est dispo ci dessous
http://www.cjoint.com/c/FCcqk5IrBIx.
Je l'ai mis ici sous Excel parce que le format csv était illisible.
Merci beaucoup.
Momo