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,

Un début de réponse.

A te relire.

Cdlt.

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 exemple

 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é et pareil pour le 2 qui est pour la tva 20

donc il suffit de permuter 1 et 2 pour que tout revienne dans l'ordre

je mérite sur ce coup là

le sujet est clos

Pascal

Rechercher des sujets similaires à "debuter macro endroit aleatoire"