Fonction VBA

zeratule -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
J'ai besoin d'aide, je sais pas comment faire les fonctions, au fait j'ai un bout de code quis je repete, donc je voulais le mettre en fonction que j'appele a chaque fois que j'en ai besoin.

Voici le code:
' Mise en forme de la page Chiffrage
'========================================================================
Cells(1, 1).Select
ActiveCell.FormulaR1C1 = "Nom de l'affaire"
Cells(2, 1).Select
ActiveCell.FormulaR1C1 = "Ref de l'affaire"
Range("A1:B1").Select
Selection.MergeCells = True
Cells(4, 1).Select
ActiveCell.FormulaR1C1 = "Semaine"
Cells(5, 1).Select
ActiveCell.FormulaR1C1 = "Chantier"
Cells(7, 1).Select
ActiveCell.FormulaR1C1 = "Item"
Cells(7, 2).Select
ActiveCell.FormulaR1C1 = "Tache"
Cells(7, 3).Select
ActiveCell.FormulaR1C1 = "Q"
Cells(5, 4).Select
ActiveCell.FormulaR1C1 = "Horraire"
Cells(4, 4).Select
ActiveCell.FormulaR1C1 = "Nbre de monteur"
Cells(7, 4).Select
ActiveCell.FormulaR1C1 = "Nbre heure"
Cells(7, 5).Select
ActiveCell.FormulaR1C1 = "Achat"
Cells(7, 6).Select
ActiveCell.FormulaR1C1 = "Observation"
Cells(5, 6).Select
ActiveCell.FormulaR1C1 = "TOT heures"
Cells(4, 9).Select
ActiveCell.FormulaR1C1 = "TOTAL "
Cells(5, 9).Select
ActiveCell.FormulaR1C1 = "REEL"

'Fusionner les cellules
Rows("3:3").Select
Application.CutCopyMode = False
Selection.MergeCells = True
Rows("6:6").Select
Selection.MergeCells = True
Range("C4:C5").Select
Selection.MergeCells = True
Range("H4:H5").Select
Selection.MergeCells = True
Range("K4:AH4").Select
Selection.MergeCells = True
Range("K4:K5").Select
Selection.MergeCells = True
Range("C1:D1").Select
Selection.MergeCells = True
Range("C2:D2").Select
Selection.MergeCells = True
Range("E1:AH2").Select
Selection.MergeCells = True
Range("F4:G4").Select
Selection.MergeCells = True

Rows("1:7").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
End With
Range("G10").Select
Range("C1:D1") = UserForm1.TextBox1
Range("C2:D2") = UserForm1.TextBox2

Merci d'avance

A voir également:

2 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour,

on peut deja simplifier un peu puis
quelque chose comme ça où Call tets1 appelle la procedure tets1

Private Sub CommandButton1_Click()
  Call test1
End Sub

Sub test1()
  ' affectations
    Cells(1, 1).Value = "Nom de l'affaire"
    Cells(2, 1).Value = "Ref de l'affaire"
    Cells(4, 1).Value = "Semaine"
    Cells(5, 1).Value = "Chantier"
    Cells(7, 1).Value = "Item"

  ' fusions
    Range("A1:B1").MergeCells = True
    Rows("3:3").MergeCells = True

  ' traces des bordures
    For Each c In Range("A1:Z7")
      c.Borders(xlDiagonalDown).LineStyle = xlNone
      c.Borders(xlDiagonalUp).LineStyle = xlNone
      c.Borders(xlEdgeLeft).LineStyle = xlContinuous
      c.Borders(xlEdgeTop).LineStyle = xlContinuous
    Next c
    
End Sub
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour à tous,

zeratule:

Une fonction ne renvoit qu'un objet (valeur, couleur, cellule....)

Pour toi il faut utiliser une fonction paramétrée
*par ex si c'est la mise en page identique de plusieurs folios et en utilisant la macro de ccm81

Sub mettre_en_page(onglet)
With Sheets(onglet)
    .Cells(1, 1).Value = "Nom de l'affaire"
    .Cells(2, 1).Value = "Ref de l'affaire"
    .Cells(4, 1).Value = "Semaine"
    .Cells(5, 1).Value = "Chantier"
    .Cells(7, 1).Value = "Item"

  ' fusions
    .Range("A1:B1").MergeCells = True
    .Rows("3:3").MergeCells = True
    ' traces des bordures
    .Range("A1:Z7").Borders.Weight = xlThin
End With

sub principale()
dim feuil1 as string
dim feuil2 as string

mettre_en_page feuil1
mettre_en_page feuil10

end sub


Nota: si c'est dans le m^me classeur, tu as beaucoup plus simple
par exemple
Sheets(Array("Feuil1", "Feuil3")).Select
en première ligne de ta macro
et 
en dernière ligne
Sheets("Feuil1").Select


Ccm81

excuse l'incruste
peut-être encore plus simple pour trace des bordures :-) si tout du moins j'ai pigé son truc
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
> michel_m
tu es pardonné d'autant plus que je viens d'appendre (et de tester) le .Borders.Weight = xlThin
bonne fin de journée
0