Aide sur vba

Bonjour,

Tous d'abord j'explique ce que j'ai réaliser sous excel :

J'ai créer un command bouton, lorsque je clic dessus sa insère un tableau de 16 colonnes et 4 lignes avec dans certaines celule des fonctions (dont recherche).

Le problème lorsque je clic une deuxième fois sur le command bouton sa insère la mise en page du tableau mais pas les fonctions.

Je souhaiterais savoir en faite comment je peux faire pour que quand je clic sur le command bouton, sa insère la mise en forme du tableau mais aussi les fonctions ?

voila les fonctions :

Range("B17").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-1],salaries,2))"

Range("C17").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-2],salaries,3))"

Range("D17").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-3],salaries,4))"

Range("E17").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-4],salaries,6))"

Range("G17").Select
ActiveCell.FormulaR1C1 = "=R[1]C"

Range("H17").Select
ActiveCell.FormulaR1C1 = "=IF(R[2]C="""",R[1]C,IF(R[3]C="""",R[2]C,R[3]C))"

Range("I17").Select
ActiveCell.FormulaR1C1 = "=IF(R[2]C="""",R[1]C,IF(R[3]C="""",R[2]C,R[3]C))"

Range("J17").Select
ActiveCell.FormulaR1C1 = "=DAYS360(RC[-3],RC[-1])"

Range("K17").Select
ActiveCell.FormulaR1C1 = "=NB.JOURS.OUVRES(RC[-4],RC[-3])"

Range("M17").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-8]="""",""0"",RC[-8]/30*RC[-3])"

Range("P17").Select
ActiveCell.FormulaR1C1 = "=COUNTA(R[2]C[-9]:R[3]C[-9])"

Je vous remercie

3 réponses

  1. Bonjour,
    Vous écrivez des fonctions cellules OK
    Donnez le code que vous avez mis dans le bouton, c'est plus intéressant pour vous aider

    Bonne programmation
    L
    0
    1. voila le code complet :

      Dim NumeroLigne As Integer
      NumeroLigne = Range("LigneTotal").Row

      'insérer ligne
      Rows(NumeroLigne).Insert Shift:=xlDown
      Rows(NumeroLigne).Insert Shift:=xlDown
      Rows(NumeroLigne).Insert Shift:=xlDown
      Rows(NumeroLigne).Insert Shift:=xlDown

      'première ligne
      NumeroLigne = Range("LigneTotal").Offset(-4, 0).Row

      Range("A" & NumeroLigne).Interior.ColorIndex = 36
      Range("F" & NumeroLigne).Interior.ColorIndex = 36
      Range("E" & NumeroLigne).Interior.ColorIndex = 2
      Range("L" & NumeroLigne).Interior.ColorIndex = 36
      Range("N" & NumeroLigne).Interior.ColorIndex = 36
      Range("O" & NumeroLigne).Interior.ColorIndex = 36
      Range("G" & NumeroLigne & ":I" & NumeroLigne).Interior.ColorIndex = 2
      Range("A" & NumeroLigne & ":P" & NumeroLigne).Borders.LineStyle = xlContinuous

      'deuxième ligne
      NumeroLigne = NumeroLigne + 1

      Range("G" & NumeroLigne & ":I" & NumeroLigne).Interior.ColorIndex = 36
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Interior.ColorIndex = 15
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Merge
      Range("E" & NumeroLigne & ":I" & NumeroLigne).Borders.LineStyle = xlContinuous

      'troisème ligne
      NumeroLigne = NumeroLigne + 1

      Range("G" & NumeroLigne & ":I" & NumeroLigne).Interior.ColorIndex = 36
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Interior.ColorIndex = 15
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Merge
      Range("E" & NumeroLigne & ":I" & NumeroLigne).Borders.LineStyle = xlContinuous

      '4eme ligne
      NumeroLigne = NumeroLigne + 1

      Range("G" & NumeroLigne & ":I" & NumeroLigne).Interior.ColorIndex = 36
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Interior.ColorIndex = 15
      Range("E" & NumeroLigne & ":F" & NumeroLigne).Merge
      Range("E" & NumeroLigne & ":I" & NumeroLigne).Borders.LineStyle = xlContinuous

      'fonction
      Range("B17").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-1],salaries,2))"

      Range("C17").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-2],salaries,3))"

      Range("D17").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-3],salaries,4))"

      Range("E17").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-4],salaries,6))"

      Range("G17").Select
      ActiveCell.FormulaR1C1 = "=R[1]C"

      Range("H17").Select
      ActiveCell.FormulaR1C1 = "=IF(R[2]C="""",R[1]C,IF(R[3]C="""",R[2]C,R[3]C))"

      Range("I17").Select
      ActiveCell.FormulaR1C1 = "=IF(R[2]C="""",R[1]C,IF(R[3]C="""",R[2]C,R[3]C))"

      Range("J17").Select
      ActiveCell.FormulaR1C1 = "=DAYS360(RC[-3],RC[-1])"

      Range("K17").Select
      ActiveCell.FormulaR1C1 = "=NB.JOURS.OUVRES(RC[-4],RC[-3])"

      Range("M17").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-8]="""",""0"",RC[-8]/30*RC[-3])"

      Range("P17").Select
      ActiveCell.FormulaR1C1 = "=COUNTA(R[2]C[-9]:R[3]C[-9])"

      end sub
      0
      1. Bonsoir,

        Pourquoi faire une macro pour créer le tableau d'origine

        Si le tableau est crée dans la feuille il suffit de sélectionner la zone , de la copier et de l'insérer

        Quand on effectue la même opération sur plusieurs lignes il faut faire une boucle
        ça simplifie le code

        exemple
        For X = 1 to 5
        Cells(X,1).Interior.ColorIndex = 36
        next X

        Bonne programmation
        0