Incrémenter les noms d'onglets

condors.s

XLDnaute Occasionnel
Bonjour le forum;

Je souhaite adapter la macro suivante:

Code:
Sub MaMacro()
Dim I As Integer, J As Integer
ActiveWorkbook.Worksheets(1).Select
ActiveSheet.Range("B7:IV7").ClearContents
J = 2
For I = 2 To ActiveWorkbook.Worksheets.Count
    ActiveSheet.Cells(7, J + 2).Select
    If Worksheets(I).Visible = xlSheetVisible Then
        ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="", _
        SubAddress:="'" & Worksheets(I).Name & "'!A1", _
        TextToDisplay:=Worksheets(I).Name
        J = J + 1
    End If
Next
End Sub

Je souhaiterais :
1- que l'incrémentation des noms d'onglet se fasse en colonne et pas en ligne (par exemple à partir de la cellule A10)
2- Qu'une ligne soit insérée par onglet pour pouvoir configurer une ligne de total qui serait decalée en fonction du nombre d'onglets.

Si vous avez des tuyaux pour moi je suis preneur.

Bonne journée à tous
 

condors.s

XLDnaute Occasionnel
Re : Incrémenter les noms d'onglets

J'ai avancé un petit peu sur le sujet.

J'ai adapté le code pour obtenir les données en ligne :

Code:
Sub MaMacro()
Dim I As Integer, J As Integer
ActiveWorkbook.Worksheets(1).Select
ActiveSheet.Range("A10:A13").ClearContents
J = 10
For I = 2 To ActiveWorkbook.Worksheets.Count
    ActiveSheet.Cells(J, 1).Select
    If Worksheets(I).Visible = xlSheetVisible Then
        ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="", _
        SubAddress:="'" & Worksheets(I).Name & "'!A1", _
        TextToDisplay:=Worksheets(I).Name
        J = J + 1
    End If
Next
End Sub

ce qu'il me reste à faire :

- La ligne 14 est une ligne de total, je voudrais ajouter ou suprimer des lignes en fonction du nombre d'onglet.

- recopier les formules de la ligne B10:K10 dans les lignes du dessous (avant le total)

Merci pour votre coup de main
 

condors.s

XLDnaute Occasionnel
Re : Incrémenter les noms d'onglets

Bonjour à tous,
J'avoue ne pas avancer pour le reste de l'opération.
Je voudrais qu'il y ait autant de ligne entre la ligne 10 et la ligne de total que le nombre d'onglets actifs (moins 1 : celui récap).

Si vous avez une piste.

Merci à tous
 

Softmama

XLDnaute Accro
Re : Incrémenter les noms d'onglets

Bonjour condors.s

Ce code permet de réaliser ce que tu as demandé :
J'ai nommé la zone 'Total' (ta ligne 14 si j'ai bien compris)
VB:
Sub Macro1()
    Dim nOnglets&
    'Récupère le nb d'onglets
    nOnglets& = ActiveWorkbook.Worksheets.Count
    'Insère (nOnglets-1) lignes avant la ligne de total
    Range("Total").Resize(nOnglets& - 1, 1).EntireRow.Insert
    ' recopie les formules de B10 à K10 jusqu'à la ligne de total
    Range("B10:K10").AutoFill Destination:=Range("B10:K" & Range("Total").Row - 1), Type:=xlFillDefault
End Sub
 

Softmama

XLDnaute Accro
Re : Incrémenter les noms d'onglets

Bonjour,

Une erreur 400...
As-tu bien pensé à copier cette macro dans un module standard ?
As-tu pensé à nommer une zone Total (Insertion -> Nom -> Définir) sur ta ligne 14 je crois ?
As-tu bien au moins 2 feuilles dans ton classeur ?

Je te joins un fichier exemple : en jaune tes formules qui vont être recopiées, en rouge ta zone total.
 
Dernière édition:

condors.s

XLDnaute Occasionnel
Re : Incrémenter les noms d'onglets

Ok Softmama, ca marche
Désolé.

Avec l'aide du forum, le code final est presque pret.

Il doit resté un bug sur le compilage
Voila le code:
Code:
Sub Macro()
' Ajoute le nombre de lignes correspondant
Rows("11:" & 11 + (Sheets.Count - 4)).Insert Shift:=xlDown

'recopie les formules de B10 à K10 jusqu'à la ligne de total
Range("B10:K10").AutoFill Destination:=Range("B10:K" & Range("Total").Row - 1), Type:=xlFillDefault

'renomme les cellules
Dim I As Integer, J As Integer
ActiveWorkbook.Worksheets(1).Select
ActiveSheet.Range("A10:A13").ClearContents
J = 10
For I = 2 To ActiveWorkbook.Worksheets.Count
    ActiveSheet.Cells(J, 1).Select
    If Worksheets(I).Visible = xlSheetVisible Then
        ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="", _
        SubAddress:="'" & Worksheets(I).Name & "'!A1", _
        TextToDisplay:=Worksheets(I).Name
        J = J + 1
    End If

End Sub

Une petite modif que je voudrais ajouté sur le nombre d'onglets :
Le code reprend "Sheet.Count - 4".
Chez moi c'est bon car j'ai des macro complémentaires qui font des onglets en plus (c'est pour ca que j'ai -4).
Je voulais faire la version avec les onglets actifs en mettant: "Activesheet.Count - 1" mais ca ne marche pas.
As tu une idée?

Merci beaucoup
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 512
Messages
2 089 203
Membres
104 063
dernier inscrit
lisadp