Fonction Public comment l'utiliser

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 !

MuscatMimi

XLDnaute Accro
Bonsoir a tous

J'ai ce code dans un Module

Public Sub Calcul(Lgn As Integer)
Dim Cel As Range

Worksheets("INTERVENTIONS").Activate

With ActiveSheet
For Each Cel In .Range("I2:I" & Lgn)
If Cel.Row = 2 Then
If Cel.Offset(0, -2) <> "" Then Cel = .Range("L1") - Cel.Offset(0, -2) 'débit
If Cel.Offset(0, -1) <> "" Then Cel = .Range("L1") + Cel.Offset(0, -1) 'crédit
Else
If Cel.Offset(0, -2) <> "" Then Cel = Cel.Offset(-1, 0) - Cel.Offset(0, -2) 'débit
If Cel.Offset(0, -1) <> "" Then Cel = Cel.Offset(-1, 0) + Cel.Offset(0, -1) 'crédit
End If
Next Cel

.Range("G" & Lgn & ":I" & Lgn).NumberFormat = "# ##0.00 €"
.Range("L2") = .Range("L1") + Evaluate("SUM(H2:H" & Lgn & ")")
.Range("L3") = Evaluate("SUM(G2:G" & Lgn & ")")

End With

End Sub

Comment faire pour que ce calcul s'éxécute dans le code "Validation" de mon Usf "ConsultationEcritures" noté ci-dessous

Private Sub CommandButton2_Click()'Validation de Modification

Dim k As Byte, ItemSelect As Long, x As Byte, Numlign As Long

With ListView1
ItemSelect = .SelectedItem.Index 'N° de l'index sélectionné dans la lisview
Numlign = Right(.ListItems(.SelectedItem.Index).Key, Len(.ListItems(.SelectedItem.Index).Key) - 1) 'N° ligne de la feuille
If MsgBox("Confirmation de la modification.", vbYesNo, "Confirmation") = vbYes Then
'mise à jour des colonnes de la listview
.ListItems(ItemSelect).Text = UCase(TextBox1)
For k = 1 To 8
If k <> 2 Then .ListItems(ItemSelect).ListSubItems(k).Text = Controls("TextBox" & k + 1)
Next
.ListItems(ItemSelect).ListSubItems(2).Text = CDate(TextBox3)
'mise à jour de la feuille
Sheets("INTERVENTIONS").Cells(Numlign, 1) = UCase(.ListItems(ItemSelect).Text)
Sheets("INTERVENTIONS").Cells(Numlign, 2) = .ListItems(ItemSelect).ListSubItems(1).Text
Sheets("INTERVENTIONS").Cells(Numlign, 3) = CDate(.ListItems(ItemSelect).ListSubItems(2).Text)
For k = 3 To 5
Sheets("INTERVENTIONS").Cells(Numlign, k + 1) = .ListItems(ItemSelect).ListSubItems(k).Text
Next
If .ListItems(ItemSelect).ListSubItems(6).Text <> "" Then _
Sheets("INTERVENTIONS").Cells(Numlign, 7) = CDbl(.ListItems(ItemSelect).ListSubItems(6).Text)
Sheets("INTERVENTIONS").Cells(Numlign, 8) = .ListItems(ItemSelect).ListSubItems(7).Text
Sheets("INTERVENTIONS").Cells(Numlign, 9) = .ListItems(ItemSelect).ListSubItems(8).Text

MiseEnForme
.ListItems(ItemSelect).Selected = False
For x = 1 To 9
Controls("TextBox" & x) = ""
Next
CommandButton2.Enabled = False
Alim_Combo
Vide_Combo
Exit Sub
Else
.ListItems(ItemSelect).Selected = False
For x = 1 To 9
Controls("TextBox" & x) = ""
Next
CommandButton2.Enabled = False
Exit Sub
End If
End With

End Sub
Merci a l'avance
 
Re : Fonction Public comment l'utiliser

Bonsoir Christian,

je vais peut-être dire une bétise mais ne suffit-il pas de placer dans le code de ton userform cette ligne (au moment où tu dois faire le calcul)
Code:
call calcul(x)

où x est un nombre et correspond à Lng de la procédure Public Sub Calcul
qui peut être également une variable de type integer comme lng

exemple tjs dans le code du userform
Code:
Lng= Range("A65536").end(xlup).row

en espérant que cela t'aide

a+ (et encore merci pour les bases de données Access)
 
Re : Fonction Public comment l'utiliser

Salut

Je comprends rien de rien , dans tes explic
j'arrive pas a comprendre pourquoi le calcul ne ce fait pas en mode Modif
usf "ConsulterEcritures"
Je t'ai envoyé un MP
jette un oeil
Bonne journée
 
Dernière édition:
Re : Fonction Public comment l'utiliser

Salut Ledzepfred

Le cacul ne ce fait pas dans la
Feuille "INTERVENTIONS"
Cellulles L2 Débit
L3 Crédit
Colonne " I "
La fonction Public Calcul ne ce fait pas

Pour la Validation ça ce passe dans Usf "Consultation Ecritures"
Btn "ValiderModifications" Le Module Calcul est en " Public"mais
je n'arrive pas a éffectuer le calcul aprés ces Lignes,,,dans le code de ce bouton

Sheets("INTERVENTIONS").Cells(Numlign, 7) = CDbl(.ListItems(ItemSelect).ListSubItems(6).Text)
Sheets("INTERVENTIONS").Cells(Numlign, 8) = CDbl(.ListItems(ItemSelect).ListSubItems(7).Text)

""""LE CALCUL DOIT CE FAIRE ICI avec la Fonction "Public " du module Calcul"

Sheets("INTERVENTIONS").Cells(Numlign, 10) = .ListItems(ItemSelect).ListSubItems(9).Text '9

Bon week-end A +++++
 
Re : Fonction Public comment l'utiliser

Salut Christian,

ben j'avoue que je sèche complètement😡, le mieux serait que tu envoies un mp à Bébère qui t'a aidé à construire ce fichier, il pourra sans doute t'aider sur ce coup-là.

Désolé encore de t'avoir fait perdre ton temps😕
en espérant que tu ne m'en voudras pas...

Bon we également
 
Re : Fonction Public comment l'utiliser

Salut Ledzepfred

T'inquiéte pas , tu sais dans la vie on ne peux pas tout savoir
ou connaitre
moi aussi , quelques fois je sais pas faire , y a pas de honte
et ne t'en veut en aucun cas
Sur ce forum vous êtes tous formidable ,compétent
et toujours prêt a aider,mais bien sur , comme tout a chacun dans la limite de ses compétences et de son savoir

Je pense a toi pour les autres BDD Access

Bon week-end
 
Re : Fonction Public comment l'utiliser

Bonjour Christian, ledzepfred

ledzepfred t'avait donné la solution.
Il faut dans la macro de validation du USF que tu définisses l'argument "Lng" de ta macro "Calcul".

- Rajoute une variable "m" par exemple dans la macro du bouton de validation de l'USF. "Dim m as Integer".
- Tu lui donnes la valeur de la dernière cellule non vide de la colonne B par exemple. "m = Sheets("INTERVENTIONS").Range("B65536").End(xlUp).Row". Tu mets cette ligne de code au début de la macro avant le "With ListView1".
- Ensuite à l'endroit où tu souhaites lancer la macro de calcul tu inscris le nom de la macro suivit de son argument : la variable "m" comme ceci :
Code:
Next
              If .ListItems(ItemSelect).ListSubItems(6).Text <> "" Then _
                  Sheets("INTERVENTIONS").Cells(Numlign, 7) = CDbl(.ListItems(ItemSelect).ListSubItems(6).Text)
              If .ListItems(ItemSelect).ListSubItems(7).Text <> "" Then _
                  Sheets("INTERVENTIONS").Cells(Numlign, 8) = CDbl(.ListItems(ItemSelect).ListSubItems(7).Text)
              [COLOR=blue]SCalcul m[/COLOR]
              Sheets("INTERVENTIONS").Cells(Numlign, 10) = .ListItems(ItemSelect).ListSubItems(9).Text '9

J'ai modifié un peu le code car tu avais une erreur si les textbox étaient vides.

J'ai aussi changé le nom de la macro de calcul, j'ai mis "SCalcul", apparemment Excel n'aime pas que tu utilises le mot Calcul comme nom de macro.

Tu n'es pas obligé de la déclarer comme Public, elle est dans un module standard donc tu peux l'appeler quand tu veux.

Pense à modifier la nom de la macro Calcul en SCalcul.

a+
 
Re : Fonction Public comment l'utiliser

Salut bqtr , et ledzepfred

Belle explication bqtr, la j'ai bien compris
avec des explications ,t'elle que la tienne , les novices (comme moi)progressent et comprennent
mieux
Effectivement je viens d'effectuer cette modif et ça fonctionne
de plus j'avais un soucis pour "ValiderModification"pour colonne "J" N°Chéque
J'ai trouvé mon erreur ici en bleu

For k = 1 To 9 ' J'avais noté 8 au lieu de 9, I est la 10ème colonne

Nickel tout fonctionne bien,
Un grand merci a toi bqtr, et a Ledzepfred (a qui d'ailleurs je dois envoyer d'autres Base Access)
Base ,que je mettrais sur ce forum, afin que d'autre personnes en profite également

Bonne fêtes a tout les deux, si on ne retrouve pas sur ce forum d'ici la

ciaoooooo
 
- 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

Réponses
4
Affichages
180
Réponses
5
Affichages
244
Réponses
8
Affichages
234
Réponses
3
Affichages
665
Réponses
2
Affichages
203
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
483
Retour