Ouvrir fichier excel puis supprimer ligne
tius38
Messages postés
23
Statut
Membre
-
Cindy -
Cindy -
Bonjour,
J'ai un petit soucis concernant une macro que j'essaie de réaliser pour le boulot. Je suis novice dans ce domaine.
Je dois à l'aide de la macro ouvrir mon fichier excel puis supprimer toutes les lignes qui contiennent une valeur supérieur à 3300 en colonne C.
Voila ce que j'ai :
J'ouvre mon fichier excel suivant son nom :
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(Array(1, 1), Array(2, 1) _
, Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True
Et la je lui dis de supprimer les lignes avec une valeur supérieur à 3300 mais il manque quelque chose je pense. J'ai récupérer ça sur internet mais il me dit "erreur 424 objet requis"
Dim cel As Range
For Each cel In feuille
If Val(cel.Value) >= 3300 Then
cel.EntireRow.Delete
End If
Next cel
Next i
End Sub
Merci de votre aide
Bonne journée
J'ai un petit soucis concernant une macro que j'essaie de réaliser pour le boulot. Je suis novice dans ce domaine.
Je dois à l'aide de la macro ouvrir mon fichier excel puis supprimer toutes les lignes qui contiennent une valeur supérieur à 3300 en colonne C.
Voila ce que j'ai :
J'ouvre mon fichier excel suivant son nom :
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(Array(1, 1), Array(2, 1) _
, Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True
Et la je lui dis de supprimer les lignes avec une valeur supérieur à 3300 mais il manque quelque chose je pense. J'ai récupérer ça sur internet mais il me dit "erreur 424 objet requis"
Dim cel As Range
For Each cel In feuille
If Val(cel.Value) >= 3300 Then
cel.EntireRow.Delete
End If
Next cel
Next i
End Sub
Merci de votre aide
Bonne journée
A voir également:
- Ouvrir fichier excel puis supprimer ligne
- Supprimer rond bleu whatsapp - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Ouvrir fichier .dat - Guide
- Ouvrir fichier docx gratuit - Guide
43 réponses
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+
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
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
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+
Ç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
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.
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
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.
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.
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
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.
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.
Tu pourrais déposer un exemple du classeur 1DAP.tif.xls sur CiJoint.fr et mettre le lien dans un poste suivant ?
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+
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.
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 :)