Ouvrir et supprimer des lignes d'un fichier en VBA

joquetino

XLDnaute Junior
Hello ,

J 'ai un souci qui doit être tout bête. Je cherche en VBA à ouvrir un fichier Excel, et supprimer sur tous les onglets
les lignes d'en tête vides.
Pour l 'ouverture du fichier, pas de souci. Par contre, je n'arrive pas à supprimer la ligne.Voici mon code :

Code:
Dim oXls As Object
Set oXls = CreateObject("Excel.Application")
oXls.Workbooks.Open fileName:=sFile
Dim nomOnglets(13) As String
Dim i As Integer
i = 0
With oXls.ActiveWorkbook
    For Each o In .Worksheets
        .Rows(1).select
        .Selection.Delete Shift:=xlUp
        nomOnglets(i) = o.Name
        i = i + 1
    Next o
    .Close
    Set oXls = Nothing
End With

Il y une erreur sur la ligne ".Rows(1).select", il me dit qu'il ne connait pas la propriété. Quelqu'un aurait-il une idée du problème?
Merci d 'avance.
 

pierrejean

XLDnaute Barbatruc
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

bonjour joquetino

A premiere vue !!

tester:

Code:
Dim oXls As Object
Set oXls = CreateObject("Excel.Application")
oXls.Workbooks.Open fileName:=sFile
Dim nomOnglets(13) As String
Dim i As Integer
i = 0
With oXls.ActiveWorkbook
    For Each o In .Worksheets
       [COLOR=blue] o.Rows(1).select
        Selection.Delete Shift:=xlUp
[/COLOR]        nomOnglets(i) = o.Name
        i = i + 1
    Next o
    .Close
    Set oXls = Nothing
End With
 

skoobi

XLDnaute Barbatruc
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

Bonjour,

Tu n'as pas besoin d'écrire Set oXls = CreateObject("Excel.Application") à moins que ton code se trouve sur word par exemple.
Je te propose ce code:

Code:
Dim oXls As Workbook
Dim i As Integer
Set oXls = Workbooks.Open(Filename:=sFile)
With oXls
    For i = 1 To .Worksheets.Count
        .Worksheets(i).Rows(1).Delete Shift:=xlUp
    Next i
    .Close
    Set oXls = Nothing
End With

Edit: arfff, pas rafraichi, salut PierreJean :)
 

joquetino

XLDnaute Junior
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

Bonsoir,

J'ai essayé ta proposition Pierre-Jean, et il me met un message d'erreur, sur la ligne : "o.Rows(1).select"

Skoobi, ça marche très bien. Par contre, si je veux une condition supplémentaire (par exemple, supprimer la première ligne si la valeur en case "A1" est égale à "toto"), comment pourrai-je faire?

J'ai essayé le code suivant, mais visiblement il n'aime pas trop ça Excel :
Code:
Dim oXls As Workbook
Dim i As Integer
Set oXls = Workbooks.Open(Filename:=sFile)
With oXls
    For i = 1 To .Worksheets.Count
        if (.Worksheets(i).Rows(1,1).value="toto") Then
        .Worksheets(i).Rows(1).Delete Shift:=xlUp
        end if
    Next i
    .Close
    Set oXls = Nothing
End With

En tout cas, merci à vous deux pour vos réponse.
 

pierrejean

XLDnaute Barbatruc
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

Re

ceci devrait fonctionner

Code:
Sub test()
Dim oXls As Workbook
Dim i As Integer
Set oXls = Workbooks.Open(Filename:="essai.xls")
With oXls
    For i = 1 To .Worksheets.Count
     If .Worksheets(i).Range("A1") = "toto" Then .Worksheets(i).Rows(1).Delete Shift:=xlUp
    Next i
    .Close
    Set oXls = Nothing
End With
End Sub

et bravo skoobi :)
 

joquetino

XLDnaute Junior
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

Hello,

J'ai testé, ça marche nickel. Par contre, j'aurai une autre question, peut-être la dernière. Dans cette macro, j'essaye de formatter les données de quelques colonnes en type texte, et de copier/coller toutes les données en collage spécial --> valeur.

Pour cela,il me faut sélectionner certaines cellules.

Code:
For i = 1 To .Worksheets.Count
        .Worksheets(i).Columns("A:A").Select
Selection.TextToColumns DataType:=xlDelimited, _
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
       Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 2), TrailingMinusNumbers:=True
     If .Worksheets(i).Range("A1") = "toto" Then .Worksheets(i).Rows(1).Delete Shift:=xlUp
    Next i

Et visiblement, il n'aime pas quand je sélectionne la colonne A de cette façon. Une idée peut-être? J'ai le même souci pour sélectionenr l'ensemble des cellules (via un cells.select)

Merci bcp
 

pierrejean

XLDnaute Barbatruc
Re : Ouvrir et supprimer des lignes d'un fichier en VBA

Re

Salut Tototiti

A tester (sans garantie !):

Code:
For i = 1 To .Worksheets.Count
        .Worksheets(i).Columns("A:A") Destination:=Range("A1"),TextToColumns DataType:=xlDelimited, _
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
       Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 2), TrailingMinusNumbers:=True
     If .Worksheets(i).Range("A1") = "toto" Then .Worksheets(i).Rows(1).Delete Shift:=xlUp
    Next i
 

Discussions similaires

Réponses
7
Affichages
410

Statistiques des forums

Discussions
312 496
Messages
2 088 978
Membres
103 996
dernier inscrit
KB4175