Référence à un onglet nouvellement créé

cs_Raistlin69 Messages postés 3 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 25 mai 2009 - 23 mai 2009 à 02:00
cs_Raistlin69 Messages postés 3 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 25 mai 2009 - 25 mai 2009 à 02:51
Bonjour,

J’ai besoin d’aide car je suis un débutant et je ne sais vraiment pas comment procéder.
J'ai fait un classeur Excel (2003) qui contient 2 feuilles.
La première, appelée Grand Sommaire, est un sommaire des résultats de la deuxième.
La deuxième, appelée Titre (1), va contenir les données.
J’ai fait une macro qui copie la 2e feuille, efface les données non nécessaires (elle ne garde que le « template », excusez l’anglicisme) et ajoute une ligne dans la 1ère feuille (Grand Sommaire) qui copie les données de la ligne du dessus.
Mon problème est que comme Grand Sommaire fait référence à la 2e feuille (Titre (1)), lorsque je copie cette ligne avec la macro dans le but d'aller chercher les informations de Titre (2), je garde la même référence, autrement dit, je reporte toujours les résultats de Titre (1).
J’essaie donc de faire une macro en VB qui, après avoir copié la 2e feuille (et effacer les données), prendrait les données spécifiques de cette nouvelle feuille, Titre (2), et les reporteraient sur Grand Sommaire.

J’ai, par exemple en A10 de Grand Sommaire ='Titre (1)'!$F$56 et je voudrais avoir en A11 ='Titre (2)'!$F$56 et en A12 ='Titre (3)'!$F$56, et ainsi de suite tant et aussi longtemps que je copierai la feuille Titre.
En espérant que mes explications soient claires, est-ce possible ?
Merci à l'avance.

Voici ce que j’ai fait jusqu’à présent :
Sub AjouterAutreTitre()

Dim indexFeuille As Integer
Dim TitreAnalyse As Variant
Dim DernierTitre As Variant
'Sert à enregistrer le numéro de titre apparaissant sur l'avant-dernière feuille (cellule H2)
Dim aAjouter As Variant
Dim LigneDepart As Integer
Dim ZoneMontant As Range
Dim ZoneSommaire As Range

Set TitreAnalyse = Range("TitreAnalyse")
Set ZoneSommaire = Range("ZoneSommaire")

ActiveWorkbook.Unprotect
ActiveSheet.Copy After:=Sheets(Sheets.Count)
DernierTitre = Sheets(Sheets.Count - 1).Range("TitreAnalyse").Value

indexFeuille = Sheets.Count

With Sheets(indexFeuille)
.Range("ZoneGauche").ClearContents
.Range("Effacer1").ClearContents
.Range("Effacer2").ClearContents
.Range("Effacer3").ClearContents
.Range("Effacer").ClearContents
.Range("TitreAnalyse") = DernierTitre + 1
.Range("A10").Select
End With

Sheets("Grand sommaire").Select

With ZoneSommaire

derniereligne = .Rows.Count - 1
LigneDepart = .Cells(.Rows.Count, 1).Row
Range(Rows(LigneDepart), Rows(LigneDepart + 1 - 1)).Select
Selection.Insert Shift:=xlDown
.Rows(derniereligne).AutoFill Destination:=Range(.Rows(derniereligne), .Rows(.Rows.Count - 1)), Type:=xlFillValues

End With
Sheets(Sheets.Count).Select

End Sub

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2009 à 05:43
tu peux mettre dans un module:

Public Function Derniere(ByVal voRange As Range) As Range
Set Derniere = Worksheets.Item(Worksheets.Count).Range(voRange.Address)
End Function

et utiliser dans ton tableau:

=Derniere(C4)
0
cs_Raistlin69 Messages postés 3 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 25 mai 2009
24 mai 2009 à 21:17
Bonjour,

Premièrement, merci pour ta réponse.
Deuxièmement, je ne la comprends pas.
Je suis très débutant en VB alors je ne sais pas trop comment intégrer cette « Public Fonction » dans mon module (où précisément devrais-je la mettre?)
De plus, ce que je désire, c’est ajouter une ligne pour chaque nouvel onglet que je créé qui dira dans mon premier onglet (Grand Sommaire):

Nouvel onglet créé Titre (2) et dans GrandSommaire à A11'Titre (2)'!$F$56
Nouvel onglet créé Titre (3) et dans GrandSommaire à A12'Titre (3)'!$F$56
Nouvel onglet créé Titre (4) et dans GrandSommaire à A13'Titre (4)'!$F$56

Il faut donc que la routine aille chercher l’information d’une cellule sur le nouvel onglet ainsi créé.
Comme je ne comprends pas ta routine, je ne sais pas comment l’imbriquer dans la mienne.

Peux-tu m’aider STP?
J’apprécie ton aide.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mai 2009 à 23:01
comment sont créés ces onglets (des feuilles)

ton texte est toujours aussi illisible...
0
cs_Raistlin69 Messages postés 3 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 25 mai 2009
25 mai 2009 à 02:51
En gros, je copie la feuille Titre (1) et j'efface certaines données sur la nouvelle feuille Titre (2).
Mon fichier Excel contient 2 feuilles au départ: GrandSommaire et Titre (1). Dans GrandSommaire se reportent les données de Titre (1).
Ma macro copie Titre (1) et créé ainsi Titre (2).
Elle ajoute une ligne à GrandSommaire et je veux que cette ligne contienne les mêmes données que Titre (1) mais pour Titre (2) et ainsi de suite pour Titre (3), (4), etc.
Je ne suis pas capable d'aller chercher les données de la nouvelle feuille, Titre (2), et les reporter dans Grand Sommaire.
J'espère que cette explication est plus claire.
Merci pour ton aide.
0
Rejoignez-nous