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. 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.
    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. 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. 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