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
- Formulaire en ligne de meta - Guide
- Mètre en ligne - Guide
- Suppression compte gmail - 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