rétablir des formules par vba

  • Initiateur de la discussion Initiateur de la discussion grisan29
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

grisan29

XLDnaute Accro
bonjour a vous tous
je voudrais par vba pouvoir rétablir une formule qui me permettrait de faire la somme de la colonne"G" démarrant a la cell11 mais pas défini jusqu'ou, je m'explique je ne sais pas a l'avance quand finira l'inscription des données dans la feuille, il faudrai un code un peu comme celui-ci
Code:
Range("G53").Select '=SOMME(G49;G52)
With Selection
    .FormulaR1C1 = "=SUM(R[-4]C,R[-1]C)"
   End With
le code peut très bien être valable pour 2 lignes d'écrites comme 150 ou plus
le tout est d'avoir comme résultat en fin d'inscription dans la cellule de fin "G??" une formule de ce genre
Code:
=SOMME(G11:G43) où (G11:G150) où (G11:G12)où autre
Pascal
 
Re : rétablir des formules par vba

Salut Grisan29

Tu peux récupérer le numéro de la dernière ligne remplie avec ce code
Code:
DLig = Range("G" & Rows.Count).End(XlUp).Row

Ensuite tu n'a plus qu'à utiliser cette variable pour ta formule
Si la formule est à mettre dans la cellule A1 (par exemple)
Code:
Range("A1").FormulaLocal = "=SOMME(G11:G" & Dlig & ")"

A+
 
Re : rétablir des formules par vba

bonjour brunoM45

merci de ta solution qui est parfaite si je savait comment l'appliquée
en fait il s'agit de mettre des bas de page quand le devis ou la facture sont finis
les bas de pages viennent bien par l'appui sur le bouton adéquat mais les formules ne suivent pas
j'ai mis ton code dans le code du bas de feuille devis mais apparemment ce n'est pas la qu'il faut le mettre
bon pour t'aider je joint le fichier qui sera libre d'aider d'autre forumeurs a l'occasion

Pascal
 
Re : rétablir des formules par vba

bonjour brunoM45
je viens de refaire un essai en mettant
comme variable mais la formule s'écrit dans la feuille bas de devis(essai sur celle la)
=somme(G11:G79)
ce qui parfait mais dans le report elle s'écrit
=somme(G90:G158)
ou est le blème
voici le code modifié
Code:
Sub devis()
'
' test Macro
'


 Dim DerLig, Dlig As Long

With Worksheets("Commande")
Dlig = .Range("G" & Rows.Count).End(xlUp).Row
   DerLig = .Range("A:G").Find("*", _
            LookIn:=xlValues, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious).Row + 1
    Set Dest = .Range("A" & DerLig + 1)
   .Range("G" & Rows.Count).End(xlUp).FormulaLocal = "=SOMME(G11:G" & Dlig & ")"
 End With

    With Worksheets("bas de page devis")
        .Range("A2:J10").Copy Dest
         
    End With

 End Sub
ou est mon erreur

Pascal
 
Re : rétablir des formules par vba

re
j'ai modifier en mettant strictement comme tu l'a dit et c'est pareil ,bien dans la feuille bas devis mais pas le report
je sais que vba et moi ne faisons pas bon ménage mais je ne vois pas comment faire même si tu es explicit
Code:
Sub devis()
'
' test Macro
'


 Dim DerLig, Dlig As Long

With Worksheets("Commande")
Dlig = .Range("G" & Rows.Count).End(xlUp).Row
   DerLig = .Range("A:G").Find("*", _
            LookIn:=xlValues, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious).Row + 1
    Set Dest = .Range("A" & DerLig + 1)
   
 End With

    With Worksheets("bas de page devis")
    .Range("G3").FormulaLocal = "=SOMME(G11:G" & Dlig & ")"
        .Range("A2:J10").Copy Dest
         
    End With

 End Sub

Pascal
 
Re : rétablir des formules par vba

Re,

Ne sachant pas exactement ce que tu veux faire 😛

Explication, le code donné
Code:
Dlig = .Range("G" & Rows.Count).End(xlUp).Row
fait a peu prêt la même chose que ton code
Code:
DerLig = .Range("A:G").Find("*", _            LookIn:=xlValues, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious).Row
Qui ceci dit à pour moi "+1" en trop

Code:
Sub devis()
' test Macro


Dim DerLig As Long


With Worksheets("Commande")
  ' Trouver la dernière ligne de la feuille
   DerLig = .Range("A:G").Find("*", _
            LookIn:=xlValues, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious).Row
    Set Dest = .Range("A" & DerLig + 1)
   
 End With


    With Worksheets("bas de page devis")
		.Range("G3").FormulaLocal = "=SOMME(G11:G" & Derlig & ")"
        ' Je ne vois pas à quoi sert cette ligne sans paste !?
        '.Range("A2:J10").Copy Dest
    End With
 End Sub

A+
 
Re : rétablir des formules par vba

bonjour BrunoM45
après toutes les péripéties de mscombct2.ocx en voici une autre
si je ne mets pas
Code:
'.Range("A2:J10").Copy Dest
le bas de page ne viens pas dans la feuille "commande" du fichier joint plus haut

en somme ce que je voudrais est quand le devis est fini, c'est pouvoir appliquer le bas de page avec toutes les formules adéquates et c'est pour cela que j'essaie de faire via des boutons, ne voyant pas d'autres solutions

Pascal
 
Dernière édition:
Re : rétablir des formules par vba

Re,

Ok j'ai mieux compris, voici un code
Code:
Sub Test()
  Call BasDePage("DEVIS")
  'ou
  'Call BasDePage("FACTURE")
End Sub


Sub BasDePage(sType As String)
  Dim DerLig As Long, ShtS As Worksheet
  ' Avec la feuille commande
  With Worksheets("Commande")
    ' Dernière ligne de la feuille commande
    DerLig = .Range("A:G").Find("*", LookIn:=xlValues, _
                                SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    ' Copier les lignes de bas de page du de la feuille source dans la feuille commande
    ' a partir de la cellule de la colonne A et dernière ligne remplie +1
    If sType = "DEVIS" Then
      Worksheets("bas de page devis").Range("A2:J10").Copy Destination:=.Range("A" & DerLig + 1)
    Else
      Worksheets("bas de page facture").Range("A2:J12").Copy Destination:=.Range("A" & DerLig + 1)
    End If
    ' Inscrire la formule pour le total
    .Range("G" & DerLig + 2).FormulaLocal = "=SOMME(G11:G" & DerLig & ")"
  End With
End Sub

Inutile, normalement, de faire 2 sub différentes pour la même chose.

Il suffit d'envoyer un argument à la sub qui fait le bas de page

J'espère que tu comprendras

A+
 
Re :RESOLU rétablir des formules par vba

bonjour BrunoM45😎
je te remercie beaucoup de ton code😎 qui est on ne peux plus parfait 😎et qui m'a permis d'adapter les 2 colonnes de tva pareillement

Merci pour ton professionnalisme a aider les néophytes comme moi😎
ce qui résout le post

Pascal
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour