Faire débuter macro a un endroit aléatoire
bonjour a vous tous
comment puis je faire démarrer cette macro que j'ai créer a l'aide de l'enregistreur afin de l'appliquer en bas de page d'un devis dont je ne sais pas a l'avance a quelle ligne, il finira mais commencera toujours a la ligne 19
Sub Macro7()
'
' Macro7 Macro
'
Dim valide$
With Sheets("feuil1")
ActiveWorkbook.Names.Add Name:="arret", RefersToR1C1:="=Feuil1!R21C3"
ActiveWorkbook.Names.Add Name:="chiflet", RefersToR1C1:="=Feuil1!R22C3"
ActiveWorkbook.Names.Add Name:="paie", RefersToR1C1:="=Feuil1!R27C6"
ActiveWorkbook.Names.Add Name:="ligne20", RefersToR1C1:="=Feuil1!R23C6"
ActiveWorkbook.Names.Add Name:="ligne10", RefersToR1C1:="=Feuil1!R24C6"
ActiveWorkbook.Names.Add Name:="totaltva20", RefersToR1C1:="=Feuil1!R23C7"
ActiveWorkbook.Names.Add Name:="totaltva10", RefersToR1C1:="=Feuil1!R24C7"
ActiveWorkbook.Names.Add Name:="accept", RefersToR1C1:="=Feuil1!R32C3"
ActiveWorkbook.Names.Add Name:="MTTC", RefersToR1C1:="=Feuil1!R28C11"
ActiveWorkbook.Names.Add Name:="TVAG", RefersToR1C1:="=Feuil1!R26C11"
ActiveWorkbook.Names.Add Name:="HT", RefersToR1C1:="=Feuil1!R25C11"
ActiveWorkbook.Names.Add Name:="datfac", RefersToR1C1:="=Feuil1!R27C5"
ActiveWorkbook.Names.Add Name:="modpaie", RefersToR1C1:="=Feuil1!R26C5"
ActiveWorkbook.Names.Add Name:="recep", RefersToR1C1:="=Feuil1!R26C6"
ActiveWorkbook.Names.Add Name:="reste", RefersToR1C1:="=Feuil1!R30C10"
ActiveWorkbook.Names.Add Name:="dont", RefersToR1C1:="=Feuil1!R31C10"
ActiveWorkbook.Names.Add Name:="comme", RefersToR1C1:="=Feuil1!R38C3"
ActiveWorkbook.Names.Add Name:="suivant", RefersToR1C1:="=Feuil1!R39C3"
ActiveWorkbook.Names.Add Name:="accord", RefersToR1C1:="=Feuil1!R35C3"
ActiveWorkbook.Names.Add Name:="acompte", RefersToR1C1:="=Feuil1!R36C3"
ActiveWorkbook.Names.Add Name:="signe", RefersToR1C1:="=Feuil1!R33C3"
ActiveWorkbook.Names.Add Name:="valtva2", RefersToR1C1:="=Feuil1!R31C11"
ActiveWorkbook.Names.Add Name:="detva", RefersToR1C1:="=Feuil1!R31C12"
ActiveWorkbook.Names.Add Name:="tottvar", RefersToR1C1:="=Feuil1!R19C15"
ActiveWorkbook.Names.Add Name:="tottvan", RefersToR1C1:="=Feuil1!R19C16"
ActiveWorkbook.Names.Add Name:="totHT", RefersToR1C1:="=Feuil1!R19C12"
ActiveWorkbook.Names.Add Name:="tvaglo", RefersToR1C1:="=Feuil1!R26C10"
ActiveWorkbook.Names.Add Name:="MHT", RefersToR1C1:="=Feuil1!R25C10"
ActiveWorkbook.Names.Add Name:="ACCVERS", RefersToR1C1:="=Feuil1!R27C10"
ActiveWorkbook.Names.Add Name:="MONT_TTC", RefersToR1C1:="=Feuil1!R28C10"
.Range("ligne20") = "TVA 20%"
.Range("ligne10") = "TVA 10%"
.Range("totaltva10").FormulaR1C1 = "=OFFSET(R[-1]C[-1],-4,9)"
.Range("totaltva20").FormulaR1C1 = "=OFFSET(R[-1]C[-1],-3,10)"
.Range("MTTC").FormulaR1C1 = "=SUM(R[-3]C:R[-2]C)-R[-1]C"
.Range("TVAG").FormulaR1C1 = "=OFFSET(R[-1]C,-5,0)"
.Range("HT").FormulaR1C1 = "=OFFSET(R[-1]C,-5,0)"
.Range("arret").FormulaR1C1 = "'Arrêté le présent devis à la somme de : "
.Range("comme").FormulaR1C1 = _
"Comme suite à votre demande, je vous prie de trouver ci-dessous ma meilleure offre de prix "
.Range("suivant").FormulaR1C1 = _
"établie suivant les éléments que vous avez bien voulu me transmettre: "
.Range("modpaie").FormulaR1C1 = "date de paiement"
.Range("dont").FormulaR1C1 = "dont"
.Range("datfac").FormulaR1C1 = "mode de paiement"
.Range("paie").FormulaR1C1 = "par chèque "
.Range("reste").FormulaR1C1 = "reste "
.Range("recep").FormulaR1C1 = " à réception du devis"
.Range("reste").FormulaR1C1 = " RESTE A PAYER"
.Range("accord").FormulaR1C1 = "Bon pour accord le......./......./2014 "
.Range("acompte") = valide
.Range("signe").FormulaR1C1 = "l'attestation daté, signé et précédé de la mention"
.Range("accept").FormulaR1C1 = "Après acceptation, nous retourner un exemplaire de ce devis et de"
.Range("valtva2").Value = CDbl([Totaltva20]) + CDbl([Totaltva10])
.Range("tottvar").FormulaR1C1 = "=SUM(R19C13:R63C13)"
.Range("tottvan").FormulaR1C1 = "=SUM(R19C14:R63C14)"
.Range("totHT").FormulaR1C1 = "=SUM(R19C9:R63C9)"
.Range("chiflet").FormulaR1C1 = "=chiffrelettre(MTTC)"
.Range("ligne20:totaltva10").Borders.LineStyle = 1
.Range("tvaglo").FormulaR1C1 = "TVA GLOBALE"
.Range("detva").FormulaR1C1 = "de tva"
.Range("detva").HorizontalAlignment = xlCenter
.Range("dont").HorizontalAlignment = xlRight
.Range("MONT_TTC").FormulaR1C1 = "MONTANT TTC"
.Range("ACCVERS").FormulaR1C1 = "ACOMPTE VERSE"
.Range("MHT").FormulaR1C1 = "MONTANT H.T."
.Range("reste:K30").Borders(xlEdgeTop).LineStyle = 1
.Range("MHT:J25:HT").Borders(xlEdgeTop).LineStyle = 1
.Range("I25:K25").MergeCells = True
.Range("I26:K26").MergeCells = True
.Range("I27:K27").MergeCells = True
.Range("I28:K28").MergeCells = True
.Range("I25:K25,I26:K26,I27:K27,I28:K28").HorizontalAlignment = xlCenter
With .Range("MONT_TTC,ACCVERS,MHT,TVAGLO,reste")
.Font.Bold = True
End With
With .Range("totaltva20,totaltva10,MTTC,TVAG,HT,valtva2,totHT,tottvar,tottvan")
.HorizontalAlignment = xlCenter
.NumberFormat = "#,##0.00 $"
End With
valide = "Je verse un acompte de 30% soit: "
With .Range("acompte")
.Value = valide & "" & Format(Range("MTTC") * 0.3, "0.00€")
With .Font
.Underline = xlUnderlineStyleSingle
.Color = RGB(0, 0, 0)
.Size = 12
.Bold = False
.Name = "Arial"
End With
End With
End With
End Sub
mais je pense que l'on peux faire mieux , mais je trouve que je l'ai déja pas mal réduit
afin de mieux cerner la demande je vous joints un exemple avec 19 lignes décrites sans appliquer le code
Pascal
bonjour Jean-eric
merci beaucoup de ta contribution qui va me permettre d'avancer d'un grand pas , c'est grâce a ces lignes
iRow = lig + .Range("E18").CurrentRegion.Rows.Count + 1
Set rng = .Range(.Cells(19, "L"), .Cells(iRow - 1, "L"))
que les inscriptions se font au bon endroit
mais dit moi comment se font les calculs car je ne vois pas de cdbl
Merci beaucoup
Pascal
re: j'ai essayer de remettre le versement d'un acompte mais le montant reste a zéro en rajoutant cette ligne
valide = "Je verse un acompte de 30% soit: "
With .Cells(iRow + 15, "C")
.Value = valide & "" & Format(.Cells(iRow + 7, "L") * 0.3, "0.00 €")
je pense que c'est parce que
.Cells(iRow + 7, "L"
est écrit en même temps
Pascal
bonjour Jean eric
Merci beaucoup, j'ai modifié comme dessous pour l'acompte et cela fonctionne , merci pour l'aide que tu m'a donné pour suivre le bon chemin
valide = "Je verse un acompte de 30% soit: "
.Cells(iRow + 15, "C") = valide & "" & Format(.Cells(iRow + 7, "L") * 0.3, "0.00 €")
Pascal
bonjour Jean eric
merci pour ton aide on ne peux plus parfaite, mais j'ai un souci car j'ai mis les boutons sur un usf et cela me créer un bug "erreur de compilation utilisation incorrect de la propriété"
c'est d'ailleurs la finalité du projet moins de boutons sur la feuille
je te joint le fichier pour une meilleure compréhension
Pascal
Bonsoir,
bonsoir Jean Eric
Merci beaucoup cela me permet de clore définitivement le post grâce a ton savoir
Pascal
bonjour le forum et Jean Eric
je ne reviens pas pour un défaut sur ce que Jean Eric a fait, mais plutôt sur une explication de comment ce fait le calcul des tva et du montant ht car je n'arrive pas a avoir les bons calculs de tva dans le bon fichier, je pense que c'est dans cette partie
With .Cells(iRow + 2, "F")
.Value = "TVA 20%"
.BorderAround Weight:=xlThin
End With
For i = 19 To iRow - 1
If .Cells(i, "M") = 1 Then tva20 = tva20 + .Cells(i, "L") * txtva20
Next
With .Cells(iRow + 2, "G")
.Value = tva20
.NumberFormat = "# ##0.00 €"
.BorderAround Weight:=xlThin
End With
With .Cells(iRow + 3, "F")
.Value = "TVA 10%"
.BorderAround Weight:=xlThin
End With
For i = 19 To iRow - 1
If .Cells(i, "M") = 2 Then tva10 = tva10 + .Cells(i, "L") * txtva10
Next
With .Cells(iRow + 3, "G")
.Value = tva10
.NumberFormat = "# ##0.00 €"
.BorderAround Weight:=xlThin
End With
With .Range(.Cells(iRow + 4, "J"), .Cells(iRow + 9, "J"))
.Value = Application.Transpose(Array _
("MONTANT H.T.", "TVA GLOBALE", "", "MONTANT T.T.C.", "", ""))
.Font.Bold = True
End With
With .Cells(iRow + 4, "L")
.Value = Application.WorksheetFunction.Sum(rng)
.NumberFormat = "# ##0.00 €"
End With
With .Range(.Cells(iRow + 4, "J"), .Cells(iRow + 4, "L"))
.Borders(xlEdgeTop).LineStyle = xlContinuous
End With
With .Cells(iRow + 5, "L")
.Value = tva10 + tva20
.NumberFormat = "# ##0.00 €"
End With
With .Cells(iRow + 7, "L")
.Value = Round(Cells(iRow + 4, "L") + Cells(iRow + 5, "L") - Cells(iRow + 6, "L"), 2)
.NumberFormat = "# ##0.00 €"
End With
en n'oubliant pas les variables qui les accompagnent
Const txtva10 As Double = 0.1
Const txtva20 As Double = 0.2
Dim tva10 As Double, tva20 As Double
en fait un commentaire ne serait pas superflu
de toute façon le fichier est en téléchargement dans le post du 23/03/2014 a 19:19
Pascal
Bonjour,
je ne reviens pas pour un défaut sur ce que Jean Eric a fait, mais plutôt sur une explication de comment ce fait le calcul des tva et du montant ht car je n'arrive pas a avoir les bons calculs de tva dans le bon fichier, je pense que c'est dans cette partie
Peux-tu joindre ton vrai fichier?
Cdlt.
bonjour Jean Eric
merci de ta réponse et voici un fichier exemple de ce que je voudrais, en sachant que le fichier que je te joints n'a que la feuille base et commande, pas d'usf de rajout d'article, juste pour le fonctionnement des calculs
la feuille est exactement celle que j'utilise, est ce que le bas de page peux s'écrire en arial 14
Pascal
Bonjour Jean Eric
le calcul ne se fait pas bien t'ai je dit eh ben j'aurais du regarder les lignes de codes avant d'en parler
For i = 19 To iRow - 1
If .Cells(i, "M") = 1 Then tva20 = tva20 + .Cells(i, "L") * txtva20
Next
pour moi le code 1 est pour la tva10 mais je ne l'avais pas signalé
donc il suffit de permuter 1 et 2 pour que tout revienne dans l'ordre
je mérite
le sujet est clos
Pascal