Suppresion lignes d'un tableau situé dans un autre classeur
Bonjour,
J'aimerais si c'est possible utiliser une macro pour pouvoir supprimer toutes les lignes (à part l’entête) d'un tableau situé dans un classeur Numéro 1, car ce tableau a besoin d’être réactualisé chaque jour.
Est-il possible d'effectuer cette macro à partir d'un classeur Numéro 2 (et si possible, sans avoir besoin d'ouvrir le classeur Numéro 1 ? )
J'ai testé ce code, qui marche uniquement si on se place dans le classeur Numéro 1:
Sub SupprimeLigne()
Application.ScreenUpdating = False
lg = Range("D65536").End(xlUp).Row
'On parcourt toute la colonne D, de 65536 à 3
For i = lg To 3 Step -1
'Si la cellule (i,4) n'est pas vide, alors on supprime la ligne i
If Not Cells(i, 4).Value = "" Then Rows(i).Delete
Next
End Sub
Ps: ma ligne d'entête est située sur la 2ème ligne. Je teste si la ligne n'est pas vide en testant chaque cellule de la colonne D...
Merci d'avance !
Bonjour,
Fais le classeur ouvert, c'est beaucoup plus simple. Et avec screenupdating = false ça passe inaperçu.
Et à moins de n'avoir qu'une seule feuille il vaut mieux adresser son nom aussi. A tester :
Sub SupprimeLigne()
Application.ScreenUpdating = False
Workbooks.Open Filename:="D:\tmp\Classeur2.xls"
With ActiveWorkbook.Sheets("Feuil1")
lg = .Range("D65536").End(xlUp).Row
'On parcourt toute la colonne D, de 65536 à 3
For i = lg To 3 Step -1
'Si la cellule (i,4) n'est pas vide, alors on supprime la ligne i
If Not .Cells(i, 4).Value = "" Then .Rows(i).Delete
Next i
End With
ActiveWorkbook.Close True
End Sub
eric
Bonjour,
Fais le classeur ouvert, c'est beaucoup plus simple. Et avec screenupdating = false ça passe inaperçu.
Qu'entend tu par là?
Au final, voici mon code. Je n'ai pas utilisé Workbooks.Open Filename au cas où mon fichier devrait être déplacé, mais ma modification à l'air de tout aussi bien fonctionner. J'arrive à supprimer les lignes de mon tableau situé dans le classeur2, à partir du classeur1.
Sub SupprimeLigne()
Application.ScreenUpdating = False
'Activer un classeur
Workbooks.Open ("Classeur2.xls")
With ActiveWorkbook.Sheets("Feuil1")
lg = .Range("D65536").End(xlUp).Row
'On parcourt toute la colonne D, de 65536 à 3
For i = lg To 3 Step -1
'Si la cellule (i,4) n'est pas vide, alors on supprime la ligne i
If Not .Cells(i, 4).Value = "" Then .Rows(i).Delete
Next i
End With
'Fermer le classeur actif
ActiveWorkbook.Close True
End Sub
Merci pour ton aide Eriiic !