indexation

maximus54

XLDnaute Nouveau
Slt au forum

Comment fait-on pour automatiser en VBA l'indexation sur une Sheet?
Dans mon programme ,une fois que Sheet(1) est copier,il faudrait que l'indexe "j" de la Sheet copier soit quelque chose comme Sheet((1)+j),"j" étant une variable "non texte".
A toute fin utile j'ai crée quelques discutions sur le sujet ,mais je n'ai toujours pas trouvé la sol à mon problème.


Mon souci ,car j'en ai un , c'est que je voudrai indexer les feuilles.
C'est a dire:
1) je crée une feuille initiale (feuil1) dans laquelle, la cellule D14=SOMME(D4:D10), la cellule D17=D14

2)je crée à partir d'un bouton la copie de la feuille initial. Feuil1 devient Feuil1 (2),Feuil1 (3),Feuil1 (4),etc... car je veux utiliser le "masque de la feuille initial

3)Dans la nouvelle feuille crée, je souhaiterai automatiser le calcul de la cellule D17 afin que D17=D14(de la feuille active)+Feuil1!D17 pour la Feuil1 (2),que D17=D14+Feuil1 (2)!D17 pour la Feuil1 (3)? etc...

Mon problème réside dans le fait que, quand je crée n'importe quelles nouvelles feuilles, D17 est, pour l'instant, D17=D14+Feuil1!D17,alors que je souhaiterai que D17=D14+Feuil(index-immédiatement-précédente)!D17.

C'est l'indexation de la nouvelle feuille que je n'arrive pas à résoudre.

J'espère que ce n'est pas trop un casse tête d'y arriver.
Merci d'avance pour l'aide que vous m'apporterez.:)
 

pierrejean

XLDnaute Barbatruc
Re : indexation

bonjour maximus54

pour ma part j'ais eu des problemes même en manuel pour ecrire:

=D14+Feuil1(4)!D17

qui me donne une reference circulaire

je te propose donc de renommer apres copie

en partant d'une unique Feuil1 (et ce même s'il existe d'autres feuilles pourvu qu'elles ne soient pas nommées Feuilx x etant un nombre )

la macro est :

Code:
Sub TEST()
For n = 1 To Sheets.Count
  If Left(Sheets(n).Name, 5) = "Feuil" Then
   num = CInt(Replace(Sheets(n).Name, "Feuil", ""))
   If num > lenum Then lenum = num
  End If
Next n
Sheets("Feuil1").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Feuil" & CStr(lenum+1)
ActiveSheet.Range("D17").Formula = "=D14+Feuil" & lenum & "!D17"
End Sub
 
Dernière édition:

maximus54

XLDnaute Nouveau
Re : indexation

Merci à toi pierrejean:)
Voilà ,grâce toutes vos idées, j’ai réussi mon code, ce fut long, fastidieux, mais ça fonctionne super bien !!
Code:
Sub Nouvelle_page()
'
Dim ongletprecedent As String
Dim maformule1 As Variant
   ongletprecedent = ActiveSheet.Name
    ActiveSheet.Copy Before:=Sheets(1)
    Sheets(1).Select
    ActiveSheet.Name = InputBox("Entrez le nom de l'onglet au format: 01")
    
        Range("b13").Select
    maformule1 = "=SUM(R[-3]C+" & ongletprecedent & "!" & "R[0]C[0])"
    ActiveCell.FormulaR1C1 = maformule1
       
       Range("b3:b7").Select
    Selection.ClearContents
       Range("b1").Select
    Selection.ClearContents
    Selection.Interior.ColorIndex = xlNone
  Range("b3").Select
End Sub
 

Pièces jointes

  • Création d'onglets avec copie de valeur.zip
    8.9 KB · Affichages: 36

Discussions similaires

Réponses
3
Affichages
207

Statistiques des forums

Discussions
312 299
Messages
2 086 998
Membres
103 425
dernier inscrit
alainPontonnier