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

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
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
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