[VBA] Masquer des colonnes identiques
Résolu
actaris51
Messages postés
106
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai besoin d'aide pour faire une macro.
J'ai un fichier excel de ce type :
http://www.cijoint.fr/cjlink.php?file=cj201103/cij1b5Q5Ml.xlsx
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 !
J'ai besoin d'aide pour faire une macro.
J'ai un fichier excel de ce type :
http://www.cijoint.fr/cjlink.php?file=cj201103/cij1b5Q5Ml.xlsx
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 !
A voir également:
- [VBA] Masquer des colonnes identiques
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Masquer conversation whatsapp - Guide
- Comment appeler en masquer - Guide
- Comment masquer les amis sur facebook - Guide
3 réponses
Bonjour,
Tu peux faire un plan sur les colonnes par macro :
Ex : http://www.cijoint.fr/cjlink.php?file=cj201104/cijgL1i7Jd.xls
Pas le temps de donner plus d'explications mais je reviens dans 1h.
eric
edit : de retour, et remplacement par une version un peu plus élaborée.
Et je viens de voir qu'il faut contrôler les changements sur toutes les lignes, nouvelle version un peut plus tard
Tu peux faire un plan sur les colonnes par macro :
Sub groupeCol()
Dim col As Long, lig As Long
lig = 3 'ligne de base pour le regroupement des colonnes
'
ActiveSheet.Outline.ShowLevels ColumnLevels:=2
On Error GoTo suite
Columns.Ungroup
suite:
On Error GoTo 0
For col = 2 To Cells(lig, Rows(1).Cells.Count).End(xlToLeft).Column
If Cells(lig, col) = Cells(lig, col - 1) Then Cells(lig, col).Columns.Group
Next col
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
End Sub
Ex : http://www.cijoint.fr/cjlink.php?file=cj201104/cijgL1i7Jd.xls
Pas le temps de donner plus d'explications mais je reviens dans 1h.
eric
edit : de retour, et remplacement par une version un peu plus élaborée.
Et je viens de voir qu'il faut contrôler les changements sur toutes les lignes, nouvelle version un peut plus tard
Re,
La version définitive :
http://www.cijoint.fr/cjlink.php?file=cj201104/cijVkxPn3x.xls
eric
La version définitive :
Sub groupeCol()
Dim col As Long, lig As Long, derlig As Long
'
ActiveSheet.Outline.ShowLevels ColumnLevels:=2
On Error GoTo suite
Columns.Ungroup
suite:
On Error GoTo 0
derlig = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
For col = 2 To Cells(3, Rows(1).Cells.Count).End(xlToLeft).Column
For lig = 3 To derlig
If Cells(lig, col) <> Cells(lig, col - 1) Then Exit For
Next lig
If lig > derlig Then Cells(lig, col).Columns.Group
Next col
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
End Sub
http://www.cijoint.fr/cjlink.php?file=cj201104/cijVkxPn3x.xls
eric