Ouvrir fichier excel puis supprimer ligne
Fermé
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
-
11 avril 2011 à 10:35
Cindy - 20 avril 2012 à 12:07
Cindy - 20 avril 2012 à 12:07
A voir également:
- Ouvrir fichier excel puis supprimer ligne
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Aller à la ligne excel - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier docx ? - Guide
43 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
11 avril 2011 à 15:56
11 avril 2011 à 15:56
Bonjour,
Après avoir ouvert le fichier texte...
Il est afficher convenablement ? chaque donnée dans une colonne ?
A+
Après avoir ouvert le fichier texte...
Il est afficher convenablement ? chaque donnée dans une colonne ?
A+
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
11 avril 2011 à 16:22
11 avril 2011 à 16:22
Oui , dans chaque colonne (A,B,C,D et E), j'ai des valeurs à partir de la ligne 2 et le nom des colonnes en ligne 1
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
11 avril 2011 à 19:24
11 avril 2011 à 19:24
Et dans quel colonne tu peu avoir 3300 ?
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
12 avril 2011 à 08:47
12 avril 2011 à 08:47
Dans la colonne C. Si la valeur est supérieure à 3300, ça répond pas à mes conditions donc il faut que je supprime la ligne pour pouvoir faire mes calculs ensuite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 avril 2011 à 10:56
12 avril 2011 à 10:56
Une tite macro qui va faire ça..
Sub SupprimerLignes() Dim Lig As Long For Lig = Range("C65536").End(xlUp).Row To 2 Step -1 If Cells(Lig, "C").Value > 3300 Then Rows(Lig).Delete Lig = Lig + 1 End If Next Lig End SubA+
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
12 avril 2011 à 14:04
12 avril 2011 à 14:04
Ça marche nickel :). Mais par contre j'arrive pas à combiner les deux. Ouvrir mes fichiers et ensuite supprimer les lignes, c'est bizarre.
Merci en tout cas, bonne journée
Merci en tout cas, bonne journée
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 12/04/2011 à 15:14
Modifié par lermite222 le 12/04/2011 à 15:14
Tu ouvre 130 feuille ou tu met tes 130 fichiers dans une seule feuille??
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
12 avril 2011 à 16:25
12 avril 2011 à 16:25
Nan j'ai 130 fichiers excels et dans chacun d'eux il faut que j'enlève les lignes qui ont une valeurs supérieur à 3300 en colonne C. Donc dans la macro j'ouvre les fichiers, je supprime les lignes si il y en a et ainsi de suite pour les 130 fichiers.
Voila la macro mais elle marche pas en l'état. Elle ouvre le fichier et c'est tout. Par contre si je demande pas d'ouvrir le fichier et que je le fais de maniere individuelle pour les 130, la partie que tu m'as donné pour supprimer la ligne fonctionne.
Sub macro()
For i = 1 To 130
feuille = Format(i, 0) & "DAP.tif.xls"
ChDir "C:\Documents and Settings\mc225714\Bureau\Supp3300"
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\mc225714\Bureau\Supp3300\" & Format(i, 0) & "DAP.tif.xls", Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Cells.Replace What:=".", Replacement:=".", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i
Dim Lig As Long
For Lig = Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
End Sub
Il doit manquer un truc entre l'ouverture du fichier et la suite
Voila la macro mais elle marche pas en l'état. Elle ouvre le fichier et c'est tout. Par contre si je demande pas d'ouvrir le fichier et que je le fais de maniere individuelle pour les 130, la partie que tu m'as donné pour supprimer la ligne fonctionne.
Sub macro()
For i = 1 To 130
feuille = Format(i, 0) & "DAP.tif.xls"
ChDir "C:\Documents and Settings\mc225714\Bureau\Supp3300"
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\mc225714\Bureau\Supp3300\" & Format(i, 0) & "DAP.tif.xls", Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Cells.Replace What:=".", Replacement:=".", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i
Dim Lig As Long
For Lig = Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
End Sub
Il doit manquer un truc entre l'ouverture du fichier et la suite
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 13/04/2011 à 13:18
Modifié par lermite222 le 13/04/2011 à 13:18
Tu n'a pas répondu à ma question.
1°) Tu ouvre le 1er fichier...
2°) tu ouvre le 2ém.. Où se trouve-t-il ? sur une autre page ou en dessous de l'autre ? (d'après ta macro il écrase le précédant.)
En fait, si tu veux mettre tes 130 fichiers l'un en dessous de l'autre ta macro n'est pas bonne.
Explique..
EDIT :
En relisant un de tes poste, ce sont des fichier Excel que tu ouvre... alors POURQUOI LES OUVRIR EN TEXTE ????
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
1°) Tu ouvre le 1er fichier...
2°) tu ouvre le 2ém.. Où se trouve-t-il ? sur une autre page ou en dessous de l'autre ? (d'après ta macro il écrase le précédant.)
En fait, si tu veux mettre tes 130 fichiers l'un en dessous de l'autre ta macro n'est pas bonne.
Explique..
EDIT :
En relisant un de tes poste, ce sont des fichier Excel que tu ouvre... alors POURQUOI LES OUVRIR EN TEXTE ????
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
13 avril 2011 à 15:17
13 avril 2011 à 15:17
1) j'ouvre mon premier fichier excel
2) je supprime mes lignes
3) (qui est pas encore sur la macro mais j'ai le code il marche) il enregistre mon fichier et le ferme
4) j'ouvre mon deuxième fichier exel
5)...
Ben en fait pour avoir la formule d'ouverture automatique, j'ai fais "nouvelle macro" et ça a enregistré ce que je faisais et j'ai récupérer ça en changeant juste un truc pour ouvrir mes fichiers les uns après les autres suivant leur nom. Je sais pas pourquoi ils s'ouvrent en texte.
2) je supprime mes lignes
3) (qui est pas encore sur la macro mais j'ai le code il marche) il enregistre mon fichier et le ferme
4) j'ouvre mon deuxième fichier exel
5)...
Ben en fait pour avoir la formule d'ouverture automatique, j'ai fais "nouvelle macro" et ça a enregistré ce que je faisais et j'ai récupérer ça en changeant juste un truc pour ouvrir mes fichiers les uns après les autres suivant leur nom. Je sais pas pourquoi ils s'ouvrent en texte.
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
161
13 avril 2011 à 15:23
13 avril 2011 à 15:23
Bonjour,
Ta fin de boucle (next i) n'est pas au bon endroit, tu dois inclure ta boucle d'effecement dedant.
donc
for i ....
for Lig ...
next Lig
next i
Ta fin de boucle (next i) n'est pas au bon endroit, tu dois inclure ta boucle d'effecement dedant.
donc
for i ....
for Lig ...
next Lig
next i
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
13 avril 2011 à 15:41
13 avril 2011 à 15:41
Oui oui effectivement, j'ai du faire un test pour voir si il ouvrait tout mes fichiers d'affilé sinon il se trouve bien à la fin
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
13 avril 2011 à 15:29
13 avril 2011 à 15:29
Sub SuppLigne() Dim i As Integer, Lig As Long Dim Chemin As String Chemin = "LeChemin\Complet\DesFichier\" For i = 1 To 130 Workbook.Open Chemin & i & "DAP.tif.xls" For Lig = ActiveWorkbook.Sheets("Feuil1").Range("C65536").End(xlUp).Row To 2 Step -1 If Cells(Lig, "C").Value > 3300 Then Rows(Lig).Delete Lig = Lig + 1 End If Next Lig ActiveWorkbook.Save ActiveWorkbook.Close Next i End Sub
Il faut adapter le chemin des fichiers
Aussi le nom de la feuille où sont les données (ici "Feuil1").
J'ai supposé que tes classeurs se nommaient.. 1DAP.tif.xls.. 2DAP.tif.xls... etc.
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
13 avril 2011 à 15:49
13 avril 2011 à 15:49
Oui tu as raison mes classeurs sont nommés 1DAP.tif.xls ...etc
Sub SuppLigne()
Dim i As Integer, Lig As Long
Dim Chemin As String
Chemin = "C:\Documents and Settings\mc225714\Bureau\Supp3300\"
For i = 1 To 130
Workbook.Open Chemin & i & "DAP.tif.xls"
For Lig = ActiveWorkbook.Sheets("feuil1").Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
ActiveWorkbook.Save
ActiveWorkbook.Close
Next i
End Sub
La ligne Workbook.Open Chemin & i & "DAP.tif.xls" ne fonctionne pas. Ca me met erreur 424 Objet requis.
Sub SuppLigne()
Dim i As Integer, Lig As Long
Dim Chemin As String
Chemin = "C:\Documents and Settings\mc225714\Bureau\Supp3300\"
For i = 1 To 130
Workbook.Open Chemin & i & "DAP.tif.xls"
For Lig = ActiveWorkbook.Sheets("feuil1").Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
ActiveWorkbook.Save
ActiveWorkbook.Close
Next i
End Sub
La ligne Workbook.Open Chemin & i & "DAP.tif.xls" ne fonctionne pas. Ca me met erreur 424 Objet requis.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
14 avril 2011 à 09:34
14 avril 2011 à 09:34
Tu pourrais déposer un exemple du classeur 1DAP.tif.xls sur CiJoint.fr et mettre le lien dans un poste suivant ?
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
14 avril 2011 à 13:43
14 avril 2011 à 13:43
Voila le lien pour le fichier :
http://www.cijoint.fr/cjlink.php?file=cj201104/cijbwBRu7R.xls
http://www.cijoint.fr/cjlink.php?file=cj201104/cijbwBRu7R.xls
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
14 avril 2011 à 13:54
14 avril 2011 à 13:54
Change la ligne FOR.. par
Pour l'erreur..
Fait une autre macro avec..
si tu n'a pas d'erreur dans le chemin le MsgBox devrait t'affiche le chemin, sinon ce serra vide
tu dis
A+
For Lig = ActiveWorkbook.ActiveSheet.Range("C65536").End(xlUp).Row To 2 Step -1
Pour l'erreur..
Fait une autre macro avec..
Sub TestChemin() Dim Chemin As String Chemin = Dir("C:\Documents and Settings\mc225714\Bureau\Supp3300\") MsgBox Chemin End Sub
si tu n'a pas d'erreur dans le chemin le MsgBox devrait t'affiche le chemin, sinon ce serra vide
tu dis
A+
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
14 avril 2011 à 14:04
14 avril 2011 à 14:04
Une fois la macro lancé, à la fin ça m'ouvre une page excel vide avec une boite de dialogue ou il y a écrit "1DAP.tif.xls" avec OK aprés.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
14 avril 2011 à 14:51
14 avril 2011 à 14:51
Grrr, autant pour moi... faut un S à WorkBook
Workbooks.Open Chemin & i & "DAP.tif.xls"A+
tius38
Messages postés
22
Date d'inscription
lundi 11 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
14 avril 2011 à 15:12
14 avril 2011 à 15:12
Sub SuppLigne()
Dim i As Integer, Lig As Long
Dim Chemin As String
Chemin = "C:\Documents and Settings\mc225714\Bureau\Supp3300\"
For i = 1 To 2
Workbooks.Open Chemin & i & "DAP.tif.xls"
For Lig = ActiveWorkbook.ActiveSheet.Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
ActiveWorkbook.Save
ActiveWorkbook.Close
Next i
End Sub
Il n'y a plus de bug, elle va jusqu'au bout mais ça ne me supprime pas les valeurs supérieures à 3300. J'y comprends plus rien :)
Dim i As Integer, Lig As Long
Dim Chemin As String
Chemin = "C:\Documents and Settings\mc225714\Bureau\Supp3300\"
For i = 1 To 2
Workbooks.Open Chemin & i & "DAP.tif.xls"
For Lig = ActiveWorkbook.ActiveSheet.Range("C65536").End(xlUp).Row To 2 Step -1
If Cells(Lig, "C").Value > 3300 Then
Rows(Lig).Delete
Lig = Lig + 1
End If
Next Lig
ActiveWorkbook.Save
ActiveWorkbook.Close
Next i
End Sub
Il n'y a plus de bug, elle va jusqu'au bout mais ça ne me supprime pas les valeurs supérieures à 3300. J'y comprends plus rien :)
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 14/04/2011 à 15:23
Modifié par lermite222 le 14/04/2011 à 15:23
Euuuh, tu a mis For i = 1 To 2 donc ça ne traite que les deux premier fichiers
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.