Vba excel

oliv64 -  
herod1983 Messages postés 200 Statut Membre -
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. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    0
  2. herod1983 Messages postés 200 Statut Membre 5
     
    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

    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    0
  4. herod1983 Messages postés 200 Statut Membre 5
     
    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.
    0