Modèle Excel - Code VBA

Résolu
marcbaertschi Messages postés 24 Statut Membre -  
zavenger Messages postés 817 Statut Membre -
Bonjour,

J'ai un petit problème avec du code VBA dans un modèle Excel.

Ce que ça doit faire:
-Lorsque j'ouvre un fichier en partant du modèle (fichier.xlt) (Double-clique dessus) le fichier doit incrémenter de 1 le nombre d'une cellule (à chaque ouverture).
-Lorsque je l'ouvre il doit aussi s'enregistrer chaque fois dans un nom différent en .xls (ex: fichier1.xls, fichier2.xls, fichiers3.xls, ...)

Ce que ça fait pour le moment:
-À la première ouverture il incrémente la cellule correctement, mais après il ne garde pas en mémoire le nouveau nombre.(ex: il fera chaque fois 0+1).
-À la première ouverture le fichier.xls s'enregistre correctement vu qu'il en existe pas d'autre mais lorsque je fais sa une deuxieme fois il me demande de changer le nom car un fichiee portant le meme nom existe déjà (C'est normal).

Mon code actuel (Surement totu faux)
Sheet1:
Private Sub Worksbook_Open()
i = i + 1
Range("F4") = i
ThisWorksbook.Save
End Sub

ThisWorkbook:
Private Sub Worksbook_Open()
i = i + 1
Range("F4") = i
ThisWorksbook.Save
End Sub

PS: Je suis sur Office 2007
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Tu n'as besoin que d'une seule macro "open" dans thisworkbook"
    Private Sub Workbook_Open()
    Dim chemin As String    ' indiquer le répertoire des fichiers
    chemin = "C:\Mes documents\fichiers\excel\" ' par exemple
                            ' plus 1 sur la zone numéro fichier
    Worksheets("sheet1").Range("F4").Value = Worksheets("sheet1").Range("F4").Value + 1
    ThisWorkbook.Save       ' sauvegarde modéle
                            ' sauvegarde classeur
    ThisWorkbook.SaveAs chemin & "fichier" & Worksheets("sheet1").Range("F4").Value & ".xls"
    End Sub
    

    Le code est commenté pour te permettre de mieux comprendre.
    Le "chemin" te permet de sauvegarder tes différents fichiers sur le répertoire choisis et tu peux rajouter l'année ou le mois dans ton chemin si tu le souhaites.
    2
    1. marcbaertschi Messages postés 24 Statut Membre
       
      Merci, mais:

      Erreur d'éxécution 9
      L'indice n'appartient pas é la séléction

      La ligne surlignée dans le débogger est:
      Worksheets("sheet1").Range("F4").Value = Worksheets("sheet1").Range("F4").Value + 1

      Est-ce que ça change quelquechose si le nom de la feuille (Sur l'interface graphique) n'est pas sheet1 ?
      -1
  2. marcbaertschi Messages postés 24 Statut Membre
     
    C'est bon j'ai réussi, il me manque juste quelque chose:

    Comment faire pour qu'il arrête d'éxecuté le code dans les fichiers .xls, parce que quand j'essaie d'ouvrir les .xls ils incrémente toujours la celulle. :-S

    Marci d'avance.
    -1
    1. zavenger Messages postés 817 Statut Membre 161
       
      Bonjour,
      J'ai trouvé ce code qui efface tout le code vba d'un classeur. Tu dois pouvoir l'adapter en applicant sur ton nouveau fichier.

      Sub DeleteAllVBA()
      Dim VBComp As Variant
      Dim VBComps As Variant

      Set VBComps = ActiveWorkbook.VBProject.VBComponents
      For Each VBComp In VBComps
      Select Case VBComp.Type
      Case 1 To 3
      VBComps.Remove VBComp
      Case Else
      With VBComp.CodeModule
      .DeleteLines 1, .CountOfLines
      End With
      End Select
      Next VBComp

      End Sub
      0