Macro qui ajoute des colonnes dans plusieurs feuilles

Bonsoir,

J'ai un fichier excel contenant plusieurs feuilles formaté de la même manière ( feuil 2, feuil3, feuil4, .....) ainsi qu'une feuille index contenant des informations à utiliser, notamment des cellules à cocher.

Si une case est coché, je souhaiterais qu'automatiquement dans toutes les autres feuilles s'ajoutent une colonne selon le modèle.

Si la case est décoché la colonne disparait.

De manière plus concrète : si la case B14 de la feuil index est coché, celà ajoute les colonnes C, K, S, ...... dans feuil1 feuil2, etc., selon le modèle de la colonne C feuil1 actuel.

Ainsi de suite si C14 est coché cela ajoute les colonnes D, L, T, ......

Merci pour votre aide

Je vous joint le fichier.

7essai1.xlsx (21.44 Ko)

Cordialement

Macgivre67

Salut macgivre,

voici ton code à coller dans le module VBA de 'Index'.

  • 'Index' avec majuscule (une petite manie à moi...) ;
  • Un clic sur ta ligne de "x" suffira pour faire le travail ;
  • Place ton tableau en 'Index' où tu veux mais veille à placer la première colonne de ce tableau sur une colonne paire (2,4,...).
Code à adapter, évidemment, dans ce cas :

If Not Intersect(Target, Range("B14:K14")) Is Nothing Then

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("B14:K14")) Is Nothing Then
    Target = IIf(Target = "x", "", "x")
    sData = IIf(Target.Offset(-2, 0) = "", Target.Offset(-2, -1), Target.Offset(-2, 0))
    iFlag = Target.Column Mod 2
    For x = 1 To Sheets.Count
        If Sheets(x).Name <> "Index" Then
            With Sheets(x)
                For y = 3 To .Cells(3, Columns.Count).End(xlToLeft).Column - 1 Step 2
                    If .Cells(2, y) = sData Then .Columns(y + iFlag).Hidden = IIf(Target = "", False, True)
                Next
            End With
        End If
    Next
    [B12].Select
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub

A+

Bonjour Curulis57 et merci pour ta réponse.

J'ai essayé ca marche très bien, mais ca ne correspond pas totalement à ce que je recherche et je ne sais pas trop comment m'y prendre.

En fait, dans mes feuilles 1 et 2 apparaissent des prénoms dans la première ligne. Pour chacun de ces prénoms il y a pour l'instant deux colonnes correspondant à l'année 2017-2018 semestre 1 et l'année 2017-2018 semestre 2.

Je souhaiterais que si je mette une croix dans la case D14 de la feuille Index (case qui correspond à 2018-2019 semestre 1), cela m'ajoute dans les autres feuilles, sous chacun des prénom une colonne supplémentaire correspondant à l'année 2018-2019 semestre 1.

Et ainsi de suite si je coche les autres cases.

Autre donnée qui peut servir : il n'y aura pas un nombre limité de feuilles, ni un nombre limité de prénoms.

J'ai simplifié le fichier que je te joins

3essai1.xlsx (17.07 Ko)

Merci encore pour ton aide.

Cordialement Macgivre67

Salut macgivre,

effectivement, rien à voir...

Je te jure... vos explications...

'Ceci n'est pas une pipe!'

Je regarde ça ce soir...

A+

Salut macgivre,

voici ma solution, à améliorer sans doute avec tes suggestions ou remarques.

  • une nouvelle saison d'étude se construit en double-cliquant, dans 'INDEX' sur [A5] 'PERIODES' ;
  • la nouvelle saison s'insère au début, histoire de garder l'actualité en première vision ;
  • les en-têtes portant les noms alternent de couleur pour une différenciation aisée ;
  • les colonnes sont calculées en fonction du nombre de noms en ligne 3 au moment du double-clic ;
  • dans 'INDEX', comme précédemment, un clic sur la ligne de "x" affiche ou cache les colonnes correspondantes.

Un mystère que je ne comprends pas : dans 'Comportement', la macro inverse le contenu de la ligne 4 : "O X" au lieu de "X O" ???

Impératif (ça me facilite la vie!) : pour construire tes prochaines feuilles, laisse une colonne vide, la [C], ayant les mêmes formats que tes colonnes suivantes. Lors de l'insertion d'une nouvelle année, les colonnes insérées "emmènent" ce format avec elles.

A te lire,

A+

6etude.xlsm (33.68 Ko)

Salut Curulis57

Merci pour ton efficacité, c'est super.

Ca fonctionne très bien et c'est même mieux que ce que j'espérais, notamment concernant les prénoms qui se rajoutent automatiquement.

En fait c'est mieux que la nouvelle saison s'insère au début.

Par contre pour des raisons de lisibilité je souhaiterais que les colonnes des feuilles puissent être rangées par enfant. Par exemple toute les saisons de Mya regroupées, toutes les saisons de Fantine regroupées, etc..... Serait-il possible de créer un bouton affecté à une macro "rangé, pas rangé"?

Autre petite question, j'essaye de décripter ton code pour voir comment il fonctionne et l'adapter si besoin sans te solliciter, pourrais-tu me donner quelques clés de lecture?

Merci encore pour ton aide et j'ai l'impression de beaucoup te solliciter.

Au plaisir de te lire.

Macgivre67

Salut macgivre,

concernant le "rangé-pas rangé", comme tu dis, faut-il que TOUS les enfants soient à l'écran simultanément ou un seul suffirait-il, soit, celui qui est scruté de plus près?

A+

Salut Curulis

un seul enfant suffirait, c'est pour avoir une vu d'ensemble de cet enfant

A+

Salut macgivre,

voilà ton fichier.

  • pour passer du mode 'Global' au mode 'Particulier', tu double-cliques sur [A5] ou [A2] ;
  • une fois dans le mode désiré, un simple clic, soit sur un prénom (particulier), soit sur la ligne des "x" (global) affiche, dans chaque feuille, les colonnes de données souhaitées.

Le mode 'Particulier' est-il suffisant?

A+

5etude.xlsm (39.27 Ko)

Bonsoir Curulis

Merci ca marche nickel et le mode Particulier est suffisant.

J'ai rajouté une petite macro que j'ai faite (certe avec mes maigres connaissances en VBA) qui me permet de copier sur une feuille "eleve1" à l'aide d'un bouton, en fonction du semestre en cours, les lignes contenant un "X" et les lignes contenant un "O".

Dans un fichier précédant j'avais créé manuellement chaque feuille "eleve" et inséré cette macro bouton dans chaque feuille en changeant manuellement les paramètres.

Comment faire pour que ces feuilles soient créées automatiquement pour chacun des enfants, soit dans le fichier Etude (à la suite de "Feuil 1", soit dans un nouveau fichier, en fonction du semestre coché sur la ligne 9.

Voici le fichier avec ma macro

4etude.xlsm (145.90 Ko)

Merci

A+

Rechercher des sujets similaires à "macro qui ajoute colonnes feuilles"