Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA] Supprimer colonnes identiques

  • Initiateur de la discussion Initiateur de la discussion actaris51
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

actaris51

XLDnaute Occasionnel
Bonjour,

J'ai besoin d'aide pour faire une macro.
J'ai un fichier excel de ce type :

Cijoint.fr - Service gratuit de dépôt de fichiers

En gros une base de temps (la premiere ligne), et un certains nombre de variables qui prennent des valeurs au cours du temps. Par exemple dans ce fichier mes lignes 3 à 23 correspondent a 20 variables qui prennent des valeurs pendant le laps de temps entre 0,0 et 0,2.

J'aimerai faire une macro qui masque (ou qui supprime) automatiquement les colonnes ou l'ensemble des variables ne change pas de valeur. En gros si les colonnes cote a cote sont identiques, mis à part le temps qui évolue.

Par exemple dans le fichier joint, il ne faudrait garder que les colonnes A,C,F,G,I et J.

Pouvez vous m'aider ?

Merci !

<config>Windows XP / Internet Explorer 6.0</config>
 
Re : [VBA] Supprimer colonnes identiques

Bonjour actaris,

à tester

Code:
Sub test()
Dim i As Long, j As Long, Valeurs, ValeursPrec, EstEgal As Boolean
    For i = Range("IV1").End(xlToLeft).Column To 2 Step -1
        Valeurs = Range(Cells(3, i), Cells(23, i)).Value
        ValeursPrec = Range(Cells(3, i - 1), Cells(23, i - 1)).Value
        EstEgal = True
        For j = LBound(Valeurs) To UBound(Valeurs)
            If Valeurs(j, 1) <> ValeursPrec(j, 1) Then
                EstEgal = False
                Exit For
            End If
        Next j
        If EstEgal Then
            Cells(1, i).EntireColumn.Delete
        End If
    Next i
End Sub
 
Re : [VBA] Supprimer colonnes identiques

Salut,

Une autre version:
Code:
Option Explicit

Sub Masque()
    Dim CptCol As Integer
    Dim Serie1 As String, Serie2 As String
    
    Serie1 = Join(Application.Transpose(Range("A3:a23")))
    For CptCol = 2 To 23
        Serie2 = Join(Application.Transpose(Range(Cells(3, CptCol), Cells(23, CptCol))))
        If Serie1 = Serie2 Then
            Columns(CptCol).Hidden = True
        Else
            Serie1 = Serie2
        End If
    Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

B
Réponses
7
Affichages
2 K
B
T
  • Question Question
Réponses
125
Affichages
13 K
C
Réponses
3
Affichages
1 K
Citronflexe
C
S
Réponses
2
Affichages
1 K
S
L
Réponses
2
Affichages
918
L
M
Réponses
4
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…