Aide sur vba

Fermé
dinna17000 - 13 avril 2010 à 18:24
dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 - 13 avril 2010 à 21:38
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 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
13 avril 2010 à 19:16
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
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 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
13 avril 2010 à 21:38
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