Bonjour à tous,
Le vous présente mon problème que je n'arrive pas à résoudre :
j'ai créer mon ruban personnalisé avec Custom UI Editor, en raccordant à mes macros existante, je rajoute dans les parenthèse ex: Sub ins_ttx(control As IRibbonControl)
Dans cette macro, je fais appel à une autre pour lancé une exécution particulière, qui elle aussi est raccordé au ruban de la même manière ex : ins_ligne(control As IRibbonControl)
et à ce moment BUG. je suppose une erreur d'écriture, évidement sinon ça ne boguerai pas :lol:
pour être claire voici mon texte de Custom :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <button id="BT17" label="Total Chapitre" screentip="Insère le total du chapitre renseigné." onAction="ins_ttx" size="normal" imageMso="TableStyleTotalsRow" />
voici celui de ma macro N°1 :
et voici celui à laquelle cette macro fait appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 Sub ins_ttx(control As IRibbonControl) Dim placeresult As String Dim numchap As String Dim i As Integer Dim j As Integer Dim deb As Integer Dim sum As Double Dim sum2 As Double If ActiveSheet.Name = "Etude" Or ActiveSheet.Name = "Etude opt" Then ActiveSheet.Unprotect Application.ScreenUpdating = False numchap = InputBox("numero du chapitre") sum = 0 sum2 = 0 i = 8 j = 0 If numchap <> "" Then ' Boucle pour trouver le chapitre de départ, si il n'existe pas le curseur s'arrete au mot fin ' situer à la dernière ligne du fichier Do While (Range("B" & i) <> numchap) Or (Range("B" & i).Font.Bold = False) And (Range("B" & i) <> "Fin") i = i + 1 Loop If Range("B" & i) <> "Fin" Then i = i + 1 deb = i ' Recherche du chapitre suivant Do While ((Range("B" & i).Font.Bold = False) Or (Range("B" & i).Font.ColorIndex <> 1)) And ((Range("B" & i).Font.Bold = False) Or (Range("B" & i).Font.ColorIndex <> 2)) i = i + 1 Loop ' On insert 6 ligne pour pouvoir afficher la somme Do While j < 7 Rows(i - 1 + j & ":" & i - 1 + j).Select Run "ins_ligne" j = j + 1 Loop ' Première ligne contient le total HT c'est à dire la somme de la colone K et la somme de la colone P ActiveSheet.Unprotect Range("d" & i + j - 6).Value = "TOTAL HT:" Range("d" & i + j - 6).Font.Bold = True Range("d" & i + j - 6).IndentLevel = 10 Range("J" & i + j - 6).Formula = "=SUM(K" & deb & ":K" & i & ")" Range("O" & i + j - 6).Formula = "=SUM(P" & deb & ":P" & i & ")" Range("J" & i + j - 6).Font.Bold = True Range("O" & i + j - 6).Font.Bold = True ' La deuxième ligne contient la part de TVA à rajouter Range("d" & i + j - 5).Formula = "= ""TVA à "" & Dépenses!tva*100 & "" % :"" " Range("d" & i + j - 5).IndentLevel = 10 Range("J" & i + j - 5).Formula = "=SUM(K" & deb & ":K" & i & ")* Dépenses!tva" Range("O" & i + j - 5).Formula = "=SUM(P" & deb & ":P" & i & ")* Dépenses!tva" ' La troisième la somme avec la TVA Range("d" & i + j - 4).Value = "TOTAL TTC:" Range("d" & i + j - 4).Font.Bold = True Range("d" & i + j - 4).IndentLevel = 10 Range("J" & i + j - 4).Formula = "=SUM(K" & deb & ":K" & i & ")* ( 1 + Dépenses!tva)" Range("O" & i + j - 4).Formula = "=SUM(P" & deb & ":P" & i & ")* ( 1 + Dépenses!tva)" Range("J" & i + j - 4).Font.Bold = True Range("O" & i + j - 4).Font.Bold = True Else: MsgBox " le chapitre " & numchap & " n'existe pas" End If End If Application.ScreenUpdating = True ActiveSheet.Protect , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True Else: MsgBox " Vous devez être sur une page d'etude " End If End Sub
PS : La second macro marche très bien indépendamment des autres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 Sub ins_ligne(control As IRibbonControl) ' Cette macro insere une ligne et duplique les formules nécessaires ' c'est à dire les formules des colones J à P, AD ' Nous avons procéder de cette manière car il n'existe pas à notre connaissance ' d'option permettant de recopier exclusivement les formules sans les données Dim i As String ActiveSheet.Unprotect Application.ScreenUpdating = False Rows(Selection.Row).Select Selection.EntireRow.Insert i = Selection.Row - 1 Range("J" & i & ":P" & i).AutoFill Destination:=Range("J" & i & ":P" & i + 1), Type:=xlFillDefault Range("Y" & i & ":AD" & i).AutoFill Destination:=Range("Y" & i & ":AD" & i + 1), Type:=xlFillDefault ' Lorsque l'on insere sous un chapitre la ligne insere prend le format de celui ci ' donc il faut remettre au bon format If (Range("B" & i).Font.Bold = True) Then With Range("B" & i + 1 & ":F" & i + 1) With .Font .FontStyle = "Normal" .ColorIndex = 5 End With With .Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With .Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With .Borders(xlEdgeBottom).LineStyle = xlNone .Interior.ColorIndex = xlNone .ClearContents End With With Range("B" & i + 1) With .Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With .Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With End With With Range("G" & i + 1 & ":P" & i + 1) .Borders(xlEdgeBottom).LineStyle = xlNone .Interior.ColorIndex = xlNone With .Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With .Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With End With End If Range("B" & i + 1).Select Application.ScreenUpdating = True ' Lorsque l'on insere sur un chapitre la ligne insere prend également une partie du ' format de celui ci ' donc il faut remettre au bon format ' Selection.AutoFill Destination:=Rows(i & ":" & i + 1), Type:=xlFillDefault ' Range("A" & i + 1).Value = "" ActiveSheet.Protect , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True End Sub
Merci par avance pour vos réponse, votre temps passé sur le sujet, et votre aide. ;)
Partager