Il est très courant de voir des personnes enregistrer des données confidentielles dans des classeurs Excel. Lorsque ces classeurs doivent être partagés avec d'autres collègues ou amis, la suppression manuelle est la seule option disponible. Cependant, avec cet article, vous apprendrez à supprimer rapidement des colonnes confidentielles ou des colonnes indésirables de plusieurs classeurs.
Téléchargez
Si vous souhaitez commencer à utiliser le logiciel dès que possible, vous pouvez :
Téléchargez le logiciel maintenant
Sinon, si vous voulez bricoler, vous pouvez lire le contenu ci-dessous.
Préparons l'interface graphique
Comme indiqué dans l'image, renommez la feuille 1 en "ControlPanel". En utilisant des formes, nous ajouterions des boutons sur cette feuille pour la faire apparaître comme GUI (interface utilisateur graphique) pour cet outil. Nous avons besoin de trois champs sur cette interface graphique. Le champ 1 sert à afficher le classeur sélectionné par l'utilisateur. Le champ 2 sert à afficher les colonnes du classeur sélectionné sous forme de liste déroulante. Le champ 3 est une liste de colonnes qui doivent être supprimées du classeur.
Un service innovant

Sub P_fpick()
Dim v_fd As Office.FileDialog
Set v_fd = Application.FileDialog(msoFileDialogFilePicker)
With v_fd
.AllowMultiSelect = False
.Title = "Please select the Excel workbook"
.Filters.Clear
.Filters.Add "Excel", "*.xls*"
If .Show = True Then
cp.Range("B4").Value = .SelectedItems(1)
End If
End With
Dim wb As Workbook
Dim ab As Workbook
Set ab = ThisWorkbook
Set wb = Workbooks.Open(cp.Range("B4").Value)
Dim v_sheets As String
v_sheets = ""
Dim lc As Long
lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
Dim c As Long
For c = 1 To lc
If v_sheets = "" Then
v_sheets = wb.Sheets(1).Cells(1, c).Value
Else
v_sheets = v_sheets & "," & wb.Sheets(1).Cells(1, c).Value
End If
Next
wb.Close False
ab.Activate
With ab.Sheets(1).Range("N4:O5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=v_sheets
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Add_Column()
If Range("Q4").Value = "" Then
Range("Q4").Value = Range("N4").Value
Else
Range("Q4").Value = Range("Q4").Value & "," & Range("N4").Value
End If
End Sub
Sub Delete_Columns()
Dim v_sheets() As String
Dim ab As Workbook
Dim wb As Workbook
Set ab = ThisWorkbook
Set wb = Workbooks.Open(Sheets(1).Range("B4").Text)
Dim lc As Long
lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
Dim c As Long
v_sheets = Split(ab.Sheets(1).Range("Q4").Text, ",")
Dim intcount As Long
For intcount = LBound(v_sheets) To UBound(v_sheets)
For c = 1 To lc
If wb.Sheets(1).Cells(1, c).Value = v_sheets(intcount) Then
wb.Sheets(1).Columns(c).Delete Shift:=xlToLeft
End If
Next c
Next intcount
wb.Close True
ab.Activate
End Sub
Ajustez-le
Pour l'instant, ce script ne gère qu'un seul classeur. Mais en utilisant la dernière méthode de ligne utilisée, vous pouvez faire en sorte que la macro gère plusieurs classeurs en mode batch. Cependant, le script ne peut pas ouvrir un Excel corrompu classeur.
Introduction de l'auteur:
Nick Vipond est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris récupération de mots et produits logiciels de récupération Outlook. Pour plus d'informations, visitez www.datanumen.com.