A voir également:
- Suppression de ligne contenant une valeur
- Forcer suppression fichier - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 mars 2016 à 16:45
2 mars 2016 à 16:45
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 mars 2016 à 17:16
2 mars 2016 à 17:16
Re,
Mets le quand même au format csv sinon on va pas s'en sortir...
Mets le quand même au format csv sinon on va pas s'en sortir...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 mars 2016 à 17:30
2 mars 2016 à 17:30
Re,
Je regarde ça ce soir si j'ai le temps...
Je regarde ça ce soir si j'ai le temps...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 mars 2016 à 14:37
3 mars 2016 à 14:37
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
2 mars 2016 à 16:51
merci beaucoup, je teste ça et vous fais un retour. Merci beaucoup d'avance.
Momo
2 mars 2016 à 17:13
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