Vba excel

m[E-07]
Bonjour à tous,

Débutant depuis... 2 jours j'essaie grace à votre site de comprendre le langage et créer des petites macros simple qui me permettraient de faciliter la création de mes fichiers dans mon boulot.
Le pb est le suivant:
à chaque nouveau chantier je créé un classeur qui comporte x feuille de calcul (x correspondant à chaque jour de chantier). Sur chaque feuille (sauf la première) la valeur de la cellule B5 par exemple, est égale à la valeur de la cellule B3 de la feuille précédente. Comment en langage vba effectuer celà et surtout créer un compteur pour répéter cette opération à toute les feuilles. Merci d'avance
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. Violà un petit programme !!!
    j'ai écrit une formule en VBa qui est l'équivalent de "=Feuil(précédente)!B5"
    j'ai essayé d'être clair
    il est possible d'améliorer sans compliquer.....

    Sub petit_programme()
    Dim NbFeuille As Integer
    Dim QteFeuille As Integer
    Dim compteur As Integer
    Dim I As Integer
    Dim LeNomDeLaFeuille As String

    NbFeuille = Val(InputBox("Combien de feuille voulez vous créer? :", "Création des feuilles", 1))
    QteFeuille = Sheets.Count
    For I = 1 To NbFeuille
    Sheets.Add After:=Sheets(QteFeuille)
    QteFeuille = Sheets.Count
    Sheets(QteFeuille).Select
    ' ici je prends le nom de la feuille pour l'écrire dans une formule
    LeNomDeLaFeuille = Sheets(QteFeuille - 1).Name
    If QteFeuille > 2 Then ' si on est sur la 3ème feuille
    Range("b3").FormulaR1C1 = "=" & LeNomDeLaFeuille & "!R[2]C"
    End If
    Next

    End Sub
    1. salut

      je te propose ceci: (a mettre dans thisworkbook)
      - cela garde le même classeur mais pour chaque jour une nouvelle feuille

      Private Sub Workbook_Open() 'a chaque ouverture de ton classeur fait la macro

      Dim d As Integer 'déclare variable
      Dim e As Integer ' integer(entier) = valeur de nombres entre -32768 à 32768
      Dim f As Integer
      Dim jour As Variant ' variant = quasiement n'importe qu'elle type de donnée

      jour = Format(Date, "dddd dd mmmm yyyy") 'jour = aujourd'hui en format ex. mercredi 19mars
      d = ActiveWorkbook.Sheets.Count ' d = compte le nombre de feuille,
      f = d + 1 'le chiffre étant la derniere feuille du classeur

      If Sheets(d).Range("A1").Value <> jour Then ' si la valeur en A1 (c'est une date) est différente de 'la date d'aujourd'hui alors

      Sheets.Add 'création d'une feuille
      ActiveSheet.Name = jour 'son nom est la date d'aujourd'hui
      ActiveSheet.Move After:=Sheets(f) 'déplace la feuille en dernière position
      Sheets(f).Range("A1").Value = jour 'inscrit dans la cellule A1 de la nouvelle feuille la date 'd'aujourd'hui
      Sheets(f).Range("B3").Value = Sheets(d).Range("B5").Value 'copy une valeur de B5 de la feuille 'précédente
      dans B3 de la nouvelle feuille
      End If

      End Sub

      1. je trouve que s'est mieux que mon petit programme et bien expliqué ( c'est un point de vue personnel)
        j'aime bien cette idée.
        Roger
        1. merci

          je suis aussi débutant dans la VBA sa ma prit 3h lol,
          ton programme est bien aussi j'y est pris des idées pour faire un programme de compta.