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

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      > 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