Excel 2003 dur dur

jeremy -  
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, Bonjour,

C'est assez compliqué à expliquer donc si je suis pas clair n'héistez pas à demander des compléments d'info°.

Je travaille sur un fichier excel composé de 6 onglets de base 1 2 3 4 5 6.

La 1 contient ma base de donnée (bcp de tableaux dont les valeur me servent pour les calculs la modifications des titres des autres cellules ....)

Dans ce 1er onglet, j'ai créé une macro qui me permet de mettre à jour mes feuilles 2-3-4-5-6 en un seul clique ( mon fichier devant être totalement modifiable).
Cette mise à jour consiste notamment à masquer les cellules vides (mm chose pour les colonnes), afficher celles ou l'on ajoute des élément dans la BDD etc...

Pour simplifier j'ai un tableau dans mon onglet 1 de type

titre 1
titre 2
titre 3

et dans l'onglet 2 3 4 5 6, j'ai :
A B
titre 1 valeur
titre 2 valeur
titre 3 valeur

et si je modifie en ajoutant un titre 4 dans la feuille 1 une ligne s'ajoute dans l'onglet 2 (mm principe pour les colonnes). (tout est réuni dans une seule macro ki est assez lourde )

Ce que je souhaite maintenant c'est faire la même chose avec les onglets, si je supprime le titre 4 alors 2 onglets, le 2 et le 3 disparraissent.(attention, si je le rajoute après, les deux onglets doivent revenir avec le même contenu.

Merci par avance pour votre réponse

Cordialement ,

Jérémy, un homme qui découvre les joies d'excel et du vba.
A voir également:

3 réponses

Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut,

Si par exemple tu as la référence de ton onglet (feuille3 par exemple) dans une cellule que tu peux nommer, dans mon exemple titi le code 1 masque ta feuille et le 2 l'ouvre, [titi] peut être donc remplacé par range("B5") si B5 contient le nom de ton onglet

Sub Macro1()

Sheets([titi].Value).Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
Sub Macro2()

Sheets([titi].Value).Visible = True
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
jerem
 
Ok, merci encore MIKE!!!!!!!!!

Je vas essayer et je te retiens au courant
0
jerem
 
Ca ne marche pas avec ta macro, je ne sais pas si j'ai exprimé clairement mon problème.

En faite, je veux que mon onglet soit liés à au tableau de ma bande de données

J'ai 5 onglets avec 5 titres A B C D E

dans ma feuille de BDD, jorai un tableau avec ces 5 titres de marqué .
Si dans ce tableau j'enleve le titre D, je veux que cet onglet D soit masquer ou supprimer de ma feuille de classeur!!(peu importe).

Merci de votre aide cordialement

Jérémy
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut jerem,

Récupères un exemple avec le lien ci-dessous

https://www.cjoint.com/?gjxAkzRwaT

Ci dessous le code qui est placé dans les propriétés de la feuille pilote du classeur, dans mon exemple la BDD. Il suffit de saisir ou de suprimer dans la plage A1 à F1 le nom de l'onglet que l'on souhaite afficher ou masquer

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:F1")) Is Nothing Then

If [A1] <> "A" Then Sheets("A").Visible = False
If [A1] = "A" Then Sheets(Range("A1").Value).Visible = True

If [B1] <> "B" Then Sheets("B").Visible = False
If [B1] = "B" Then Sheets(Range("B1").Value).Visible = True

If [C1] <> "B" Then Sheets("C").Visible = False
If [C1] = "B" Then Sheets(Range("C1").Value).Visible = True

If [D1] <> "D" Then Sheets("D").Visible = False
If [D1] = "D" Then Sheets(Range("D1").Value).Visible = True

If [E1] <> "E" Then Sheets("E").Visible = False
If [E1] = "E" Then Sheets(Range("E1").Value).Visible = True

If [F1] <> "B" Then Sheets("F").Visible = False
If [F1] = "B" Then Sheets(Range("F1").Value).Visible = True

Sheets("BDD").Select
End If
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0