XL 2013 Des onglets cachés

hichamoo

XLDnaute Nouveau
Bonjour à tous

Voila j'ai crée un fichier excel ou je il ya deux feuilles "MODELE" et "LISTE".
J'ai crée un code vba qui me permet de créer une copie de la feuille MODELE avec les données récupérées de la feuille LISTE.
Tout marche a merveille sauf que si je cache la feuille MODELE toutes les autres copies sont aussi cachées.
L'idée c'est de pouvoir cacher la feuille MODELE mais quand je demande à faire des copies les copies sortent normales sans qu'elles soient cachées.
Je vous mets ci-dessous le code vba
J'ai essayé le code Sheets(Sheets.Count).Visible = True
Mais je ne sais pas pourkoi il me change le nom de la page source MODELE qui devient MLODELE (2) du coup apres tout mes codes sont faussés.
Merci tout le monde



Public Sub CreerFeuilles()

Dim oShModele As Worksheet
Dim oShListe As Worksheet
Dim iLigFin As Integer
Dim iLig As Integer
Dim oShNew As Worksheet
Dim sNomOnglet As String

Set oShModele = Worksheets("Modele")
Set oShListe = Worksheets("LISTE")

iLigFin = oShListe.Range("C" & Rows.Count).End(xlUp).Row

For iLig = 2 To iLigFin
If oShListe.Range("C" & iLig).Value <> "" Then
sNomOnglet = oShListe.Range("B" & iLig).Value & " " & oShListe.Range("C" & iLig).Value
If OngletExist(sNomOnglet) Then
Set oShNew = Worksheets(sNomOnglet)
Else
oShModele.Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = sNomOnglet
Set oShNew = Worksheets(Worksheets.Count)
End If
oShNew.Range("D5").Value = oShListe.Range("B" & iLig).Value 'Nom
oShNew.Range("D6").Value = oShListe.Range("C" & iLig).Value 'Prénom


'lien hypertext
oShNew.Hyperlinks.Add Anchor:=oShListe.Range("B" & iLig), Address:="", SubAddress:= _
"'" & sNomOnglet & "'!A1", TextToDisplay:=oShListe.Range("B" & iLig).Value
Set oShNew = Nothing


End If
Next iLig

oShListe.Select

Set oShListe = Nothing
Set oShModele = Nothing

End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour à tous

Voila j'ai crée un fichier excel ou je il ya deux feuilles "MODELE" et "LISTE".
J'ai crée un code vba qui me permet de créer une copie de la feuille MODELE avec les données récupérées de la feuille LISTE.
Tout marche a merveille sauf que si je cache la feuille MODELE toutes les autres copies sont aussi cachées.
L'idée c'est de pouvoir cacher la feuille MODELE mais quand je demande à faire des copies les copies sortent normales sans qu'elles soient cachées.
Je vous mets ci-dessous le code vba
J'ai essayé le code Sheets(Sheets.Count).Visible = True
Mais je ne sais pas pourkoi il me change le nom de la page source MODELE qui devient MLODELE (2) du coup apres tout mes codes sont faussés.
Merci tout le monde



Public Sub CreerFeuilles()

Dim oShModele As Worksheet
Dim oShListe As Worksheet
Dim iLigFin As Integer
Dim iLig As Integer
Dim oShNew As Worksheet
Dim sNomOnglet As String

Set oShModele = Worksheets("Modele")
Set oShListe = Worksheets("LISTE")

iLigFin = oShListe.Range("C" & Rows.Count).End(xlUp).Row

For iLig = 2 To iLigFin
If oShListe.Range("C" & iLig).Value <> "" Then
sNomOnglet = oShListe.Range("B" & iLig).Value & " " & oShListe.Range("C" & iLig).Value
If OngletExist(sNomOnglet) Then
Set oShNew = Worksheets(sNomOnglet)
Else
oShModele.Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = sNomOnglet
Set oShNew = Worksheets(Worksheets.Count)
End If
oShNew.Range("D5").Value = oShListe.Range("B" & iLig).Value 'Nom
oShNew.Range("D6").Value = oShListe.Range("C" & iLig).Value 'Prénom


'lien hypertext
oShNew.Hyperlinks.Add Anchor:=oShListe.Range("B" & iLig), Address:="", SubAddress:= _
"'" & sNomOnglet & "'!A1", TextToDisplay:=oShListe.Range("B" & iLig).Value
Set oShNew = Nothing


End If
Next iLig

oShListe.Select

Set oShListe = Nothing
Set oShModele = Nothing

End Sub
Bonjour,
Sans classeur, je dirais pour cette partie du code
VB:
'--------
'--------
Else
oShModele.Visible = True
oShModele.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sNomOnglet
Set oShNew = Worksheets(Worksheets.Count)
oShModele.Visible = False
End If
'--------
'--------
et mettre en début de macro
Code:
Application.ScreenUpdating = False
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
eih
J'ai testé votre code qui marche bien sauf que si la feuille "MODELE" au départ n'est pas cachée alors le cade la rends cachée après exécution. loool
Re...
Oui, cela est voulu dans ma proposition.
Si cela ne devait pas être, supprimer la ligne
==> oShModele.Visible = False <==
Il faudra alors au besoin, masquer la feuille manuellement

*On peut si cela est nécessaire tester l'état de la feuille(Masquer/Afficher) et la remettre à l'état ou elle était avant le lancement de la macro
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Dans le message #1 tu sembles dire que tout fonctionne bien à part un seul petit souci qui est que la feuille résultat de la copie est cachée si la feuille origine de la copie est cachée.
Et en #4 tu sembles dire que parfois la feuille d'origine n'est pas forcément cachée.
Dans ce cas, je pense qu'il suffit de faire la copie puis de "dé-cacher" (montrer ;)) aussitôt la feuille obtenue, sans toucher à la visibilité de la feuille d'origine.

Donc tu peux essayer d'ajouter une ligne à ton code du message #1, juste après la création de la nouvelle feuille :
oShNew.Visible = True
 

hichamoo

XLDnaute Nouveau
Re...
Oui, cela est voulu dans ma proposition.
Si cela ne devait pas être, supprimer la ligne
==> oShModele.Visible = False <==
Il faudra alors au besoin, masquer la feuille manuellement

*On peut si cela est nécessaire tester l'état de la feuille(Masquer/Afficher) et la remettre à l'état ou elle était avant le lancement de la macro
Bonjour Merci de votre réponse
Oui justement c'est ce que je veux c'est remettre la feuille dans son état d'avant la macro.
 

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV