Suppression de colonnes en double (Microsoft Excel)
Dror a une feuille de calcul qui contient pas mal de données. Il est possible que les données d’une colonne soient exactement les mêmes que les données d’une autre colonne, il se demande donc s’il existe un moyen simple de supprimer les colonnes en double dans la feuille de calcul.
La première étape, bien sûr, est de déterminer si deux colonnes sont identiques ou non. Cela peut être déterminé assez facilement avec une formule matricielle telle que la suivante:
=AND(A1:A100=B1:B100)
(N’oubliez pas qu’une formule matricielle est saisie en utilisant Shift + Ctrl + Enter.)
La formule compare toutes les valeurs des 100 premières lignes des colonnes A et B. Si elles sont toutes identiques, la formule renvoie VRAI. Si l’une des cellules ne correspond pas, la formule renvoie FALSE. Si le résultat est VRAI, vous pouvez supprimer l’une des colonnes car elles sont identiques.
Si vous voulez quelque chose d’un peu plus automatique, ce qui signifie que la colonne dupliquée est supprimée, vous devrez utiliser une macro. Les étapes suivantes à travers toutes les colonnes de la feuille de calcul et, en commençant par la colonne la plus à droite, compare toutes les colonnes. Si certains sont identiques, quel que soit leur ordre dans la feuille de calcul, la macro vous demande si vous souhaitez que la colonne dupliquée soit supprimée.
Sub DeleteDuplicateColumns() Dim rngData As Range Dim arr1, arr2 Dim i As Integer, j As Integer, n As Integer On Error Resume Next Set rngData = ActiveSheet.UsedRange If rngData Is Nothing Then Exit Sub n = rngData.Columns.Count For i = n To 2 Step -1 For j = i - 1 To 1 Step -1 If WorksheetFunction.CountA(rngData.Columns(i)) <> 0 And _ WorksheetFunction.CountA(rngData.Columns(j)) <> 0 Then arr1 = rngData.Columns(i) arr2 = rngData.Columns(j) If AreEqualArr(arr1, arr2) Then With rngData.Columns(j) 'mark column to be deleted .Copy If MsgBox("Delete marked column?", vbYesNo) _ = vbYes Then rngData.Columns(j).Delete Else 'remove mark Application.CutCopyMode = False End If End With End If End If Next j Next i End Sub
Function AreEqualArr(arr1, arr2) As Boolean Dim i As Long, n As Long AreEqualArr = False For n = LBound(arr1) To UBound(arr1) If arr1(n, 1) <> arr2(n, 1) Then Exit Function End If Next n AreEqualArr = True End Function
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (5674) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Deleting_Duplicate_Columns [Suppression des colonnes en double]
.