Vba excel

oliv64 -  
herod1983 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   -
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

4 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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
herod1983 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   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
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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
herod1983 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   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