Fonction Public comment l'utiliser

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
 

ledzepfred

XLDnaute Impliqué
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)
 

MuscatMimi

XLDnaute Accro
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:

MuscatMimi

XLDnaute Accro
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 +++++
 

ledzepfred

XLDnaute Impliqué
Re : Fonction Public comment l'utiliser

Salut Christian,

ben j'avoue que je sèche complètement:mad:, 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:confused:
en espérant que tu ne m'en voudras pas...

Bon we également
 

MuscatMimi

XLDnaute Accro
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
 

bqtr

XLDnaute Accro
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+
 

MuscatMimi

XLDnaute Accro
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
 

Discussions similaires

Réponses
2
Affichages
137

Statistiques des forums

Discussions
312 047
Messages
2 084 859
Membres
102 688
dernier inscrit
Biquet78