Bonjour,
Je souhaiterais supprimer la première ligne de plusieurs fichiers Excel em même temps par le biais d'un script.
Je ne sais pas comment m'y prendre.
Merci encore pour votre aide.
Bonjour,
Je souhaiterais supprimer la première ligne de plusieurs fichiers Excel em même temps par le biais d'un script.
Je ne sais pas comment m'y prendre.
Merci encore pour votre aide.
Salut,
commence par construire la liste des fichiers concernés : Liste des fichiers d'un dossier + Liens
Utilise l'enregistreur de macro pour dégrossir la syntaxe de suppression de ligne : Excel et l'enregistreur de macro
Ensuite en balayant la liste des fichiers concernés avec la procédure idoine tu devrais arriver au résultat.
Re, Un embryon de réponse, affecte un bouton à la procédure SelectionFichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Option Explicit Sub SelectionFichier() Dim FD As FileDialog Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path & "\" .AllowMultiSelect = False .Filters.Clear .Filters.Add "xls", "*.xls*", 1 .ButtonName = "Ouvrir fichier" .Title = "Sélectionner un fichier Excel" End With If FD.Show = True Then DoEvents DelLigne FD.SelectedItems(1) End If Set FD = Nothing End Sub Private Sub DelLigne(sFichier As String) Dim Wkb As Workbook, Wsh As Worksheet Application.ScreenUpdating = False Set Wkb = Workbooks.Open(sFichier) Set Wsh = Wkb.Worksheets(1) Wsh.Rows("1:1").Delete Shift:=xlUp Application.DisplayAlerts = False Wkb.SaveAs Filename:=sFichier Wkb.Close With Application .DisplayAlerts = True .ScreenUpdating = True End With Set Wsh = Nothing Set Wkb = Nothing End Sub
Merci je vais essayer cela.
On pourrait générer un exe ou en powershell pour effectuer l'action ?
J'avais trouvé ce code la em vba qui faisait le boulot
Mais je sais pas comment automatiser ça sur plusieurs fichiers Excel différent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub sbVBS_To_Delete_EntireRow() Rows(1).EntireRow.Delete End Sub
Re, toujours un embryon mais plus élaboré, ici la feuille "Feuil2" est concernée si elle existe.
Salut, pour traiter des fichiers en masse voir lien du post# 2 et l'adapter à ton contexte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Option Explicit Sub SelectionFichier() Dim FD As FileDialog Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path & "\" .AllowMultiSelect = False .Filters.Clear .Filters.Add "xls", "*.xls*", 1 .ButtonName = "Ouvrir fichier" .Title = "Sélectionner un fichier Excel" End With If FD.Show = True Then DoEvents Application.StatusBar = "" DelLigne FD.SelectedItems(1) End If Set FD = Nothing End Sub Private Sub DelLigne(sFichier As String) Dim Wkb As Workbook, Wsh As Worksheet, sFeuille As String Application.ScreenUpdating = False sFeuille = "Feuil2" Set Wkb = Workbooks.Open(sFichier) If FeuilleExiste(Wkb.Name, sFeuille) Then Set Wsh = Wkb.Worksheets(sFeuille) Wsh.Rows("1:1").Delete Shift:=xlUp Application.DisplayAlerts = False Wkb.SaveAs Filename:=sFichier Application.DisplayAlerts = True Set Wsh = Nothing End If Wkb.Close Set Wkb = Nothing Application.ScreenUpdating = True End Sub Private Function FeuilleExiste(sClasseur As String, sFeuille As String) As Boolean Dim v As Variant v = Evaluate("ISREF('[" & sClasseur & "]" & sFeuille & "'!A1)") FeuilleExiste = IIf(IsError(v), False, v) End Function
Je vais tester tt ça demain
Je te tiens au courant.
En tt cas merci merci bien
Salut, une version qui fonctionne ici sur les "Feuil2" de mes tests, donc à adapter à ton contexte ( dans Private Sub DelLigne(sFichier As String) sFeuille = .... ). Bref cela fait un peu marteau-pilon pour écraser des noisettes .....
Hey))
Ca fonctionne c'est super merci beaucoup.
Penses-tu qu'il est possible de script cela maintenant ?
Genre je lance un exe et bam ca execute l'action qui est faite par le bouton "Supprimer Ligne".
Merci encore c'est super sympa
Partager