Aide sur vba

dinna17000 -  
dct33 Messages postés 42 Statut Membre -
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. dct33 Messages postés 42 Statut Membre 39
     
    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
  2. dinna17000
     
    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
  3. dct33 Messages postés 42 Statut Membre 39
     
    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