Somme de Somme.si mais en VBA sur de potentielles cellules
Bonjour,
J’ai construit une feuille de facturation soit une liste de référence avec leurs tarifs. Ces derniers sont additionnés selon leurs TVA 5,5% (en E43) ou 20% (en F43) à travers des formules SOMME SI.
Puis la facture est résumée de façon on ne peu plus classique : Total HT / Total TVA / Total TTC (via des formules de rappel)
Voici le problème.
Le format de page « Facturation » est sur 53 lignes.
Si il y a trop de référence il est possible (via un code"Nouvelle page") de « copier » ces 53 lignes pour les « coller » en dessous.
Remarque : les « SOMME.SI » seront recopiées et efficace mais seulement sur leurs 53 lignes.
Une fois la saisie et l’enregistrement effectués, un code (supprime) vient effacer toutes les lignes > à 53. (Pour conserver ainsi qu’une seule page).
Vous comprendrez que le but de la facture est d’avoir la TVA global sur toutes les références et ne pas faire feuille par feuille (idem pour total HT et total TTC).
Alors comment faire pour que :
Si il y a 1 page :
E43= SOMME.SI(J15 :J37; »5,5% » ;K15 :K37) »
Si il y a 2 pages : (+53 lignes)
E43=E43+E96, soit :
E43= SOMME.SI(J15 :J37; »5,5% » ;K15 :K37) » + SOMME.SI(J68 :J90; »5,5% » ;K68 :K90) »
et
E96=E43+E96, soit
E96= SOMME.SI(J15 :J37; »5,5% » ;K15 :K37) » + SOMME.SI(J68 :J90; »5,5% » ;K68 :K90) »
Si il y a 3 pages : (+53 lignes*2)
Etc….
Si vous voulez faire fonctionner le fichier joint, taper 1 ou 2 ou 3 ou 4 dans la colonne "code puis les quantité que vous souhaitez dans quantités.
Merci d’avoir pris le temps
Amicalement.
Bonjour,
Pour moi, il y a une grave erreur
Une facture qui a plusieurs pages ne doit pas se terminer pas "Net à payer" sur chaque page
Oui, Tu as tout à fait raison BrunoM45.
Mais mon format facture doit suivre mon format "Bon de commande" et "Bon de Livraison", préalablement générés via ce fichier Excel.
Et pour cela, une fois le code fonctionnelle , je m'arrangerait avec des fonction SI de mettre les écritures des premières page en banc.
Ainsi les totaux ne seront que sur la dernière page.
Amicalement,
Alex.
Alex,
Pourquoi ne pas tout simplement ajouter des lignes
comme cela ça répond totalement à ta problématique de SOMME()
A+
Ahhhhhh.... Ce serait tellement si simple.
Evidement, la logique voudrait la simplicité : ajouté des lignes de références dans le corps de la facture.
Mais voila, le problème c'est cette feuille est cachée dans le fonctionnement de l'application.
Elle est issue des 64 Feuil de mon classeur et fonctionne depuis une autre feuille. C'est à dire que dans le format que j'ai posté vous remplissez les références et les Quantités.
Mais dans la VO ces données sont remplies depuis une autre étape dans le cheminement BC / BL / Facturation.
Bref, si je change le format, ça complique beaucoup de chose en amont.
Désolé de ne pas vouloir la simplicité.
Alex.
Bonjour,
Voici la solution que j'ai pu mettre en place
(cette solution m'a été proposée par DAN, membre très actif sur ce Forum. Si tu passe par là, merci encore à toi Dan de liège au gamertag "la panthère rose").
il faut utiliser la fonction FORMULA R1C1
.Range("K" & lig + 18).FormulaR1C1 = "=SUM(R[-27]C : R[-5]C, R[-53]C)"
Puis l'adapter par chaque range.
Amicalement,
Alex
Re
Mon cher BrunoM45... aucun souci mais ne me fais pas plus vieux que je ne suis hein ...
Au plaisir de se recroiser...
Salut Dan
Mon cher BrunoM45... aucun souci mais ne me fais pas plus vieux que je ne suis hein ...
Je travaille encore mais la retraite est proche quand même...
Mince je te croyais fonctionnaire
Au plaisir de se recroiser...
Tout a fait au plaisir de se recroiser, voir même dans la vrai vie
Bonjour à vous messieurs, Dan, Bruno,
J'ai posté un com sur la problématique d'un lien hypertexte, mais j'ai peu de réponse et je n'y arrive toujours pas.
Pouvez-vous m'éclairer sur la conception d'un lien hypertexte (Cf. le code ci dessous).
Je sais que Dan va assurer.
Sub ENRtableau()
Dim derlig As Long
Range("E3").Copy
'je copie le code client généré en E3 sur la Feuille "Fiche client"
Sheets("TABclient").Select
'Feuille où se trouve mon tableau récapitulatif des clients enregistrés
derlig = Range("B5").End(xlDown).Address
' la 1ère colonne de mon tableau est la colonne "B"
'Je vais chercher la dernière cellule pleine de ce tableau
Range(derlig).Select
ActiveCell.Offset(1, 0).Select
'Je descends d'une range pour être sur la première ligne vide
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Je colle le code client dans cette range
'Lien hypertexte vers la feuille qui s'est renommée comme le code client :
ActiveSheet.Hyperlinks.Add _
Anchor:=Selection, _
Address:="", _
SubAddress:=Worksheets(Selection).Name, _
TextToDisplay:=derlig - 1
'L'ancre : (là où il y aura le lien hypertexte) la cellule où a été copié le code client dans le tableau récapitulatif
'Adress : Je ne sais pas ce que c'est...
'Subaddress : là où le lien va nous emmener : la Feuille qui porte le nom du code client
'TextToDisplay : le nom écrit pour le lien hypertexte : le code client
Call RETOURPAGE
Range("E6,E9,E13,E14,E15,E16,E18:E23,E26:E31,E34:E35").Copy
Sheets("TABclient").Activate
derlig = Range("C5").End(xlDown).Address
Range(derlig).Select
Selection.Offset(1, 0).Activate
If Selection.Offset(0, -1) > 0 Then
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Else: GoTo 1
End If
1
Call RETOURPAGE
Range("E6").Activate
End Sub
Merci beaucoup.
Amicalement,
Alex.