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].