Modifier un code VBA

0

J'ai ce code:

Public Function CDZEman(Compte As String, Cle As Range, Optional mois As String, Optional annee As String) As String

C1 = Right("00000000000000000000" & Compte, 20)
Set CleRange = Cle
cler = WorksheetFunction.Sum(CleRange)
cler = CStr(Format(cler * 100, "0000000000000"))
C2 = CStr(Format(Cle.Rows.Count, "0000000"))
If mois = "" Then mois = Month(Now())
If annee = "" Then annee = Year(Now())

mois = Right(CStr(Format(mois, "00")), 2) & Right(CStr(Format(annee, "0000")), 4)
C3 = Space(14) & "0"

CDZEman = "*" & C1 & cler & C2 & mois & C3

End Function

Je veux modifier cette ligne:

C2 = nbval(Format(Cle.Rows.Count, "0000000"))

pour quelle me donne le nombre des cellules non vide dans la colonne qui contient les montant à ajouter.

( cler = WorksheetFunction.Sum(CleRange)

cler = CStr(Format(cler * 100, "0000000000000")) ).

car, quand je sélectionne par exemple la colonne (G:G), j'obtient le somme exact, mes le nombre des valeurs est de 1048576, c'est à dire le nombre de lignes d'un classeur excel.

https://www.cjoint.com/c/MHqnQ5aiGaN


Posté le 16 août 2023, 15:43
par yazidioubi
Répondre
  • Pardon, Je veux modifier cette ligne: C2 = CStr(Format(Cle.Rows.Count, "0000000")) et pas C2 = nbval(Format(Cle.Rows.Count, "0000000")) – yazidioubi 16 août 2023, 15:52
1

Bonjour yazidioubi,

ton fichier en retour : https://www.cjoint.com/c/MHrqgtUhOe0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

en D2 : =SI(C2="";"";DROITE(C2;2))

en E2 : =SI(B2="";"";CCP(B2))

en F2 : =SI(B2="";"";RIP(B2))

en H2 : =Ligs(C2;G2;A2)

en H19 : =CDZEman(30003458;C:C;G:G;8;2023)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

code VBA de Module2 (17 lignes) :

Option Explicit

Public Function CDZEman(Compte$, RIP As Range, Clé As Range, _
                    Optional mois$, Optional année$) As String
  On Error GoTo ErrMA
  Dim DS As Date, M As Byte, A%, c$, cler$, chn$, d&
  c = Left$(RIP(2).Value, 8) & Format(Compte, String$(12, "0"))
  cler = CStr(Format(WorksheetFunction.Sum(Clé) * 100, String$(13, "0")))
  DS = Now(): If mois = "" Then M = Month(DS) Else M = Val(mois)
  If année = "" Then A = Year(DS) Else A = Val(année)
  d = Cells(Rows.Count, "G").End(xlUp).Row - 1
  chn = Format(d, String$(7, "0")) & Format(M, "00") & Format(A, "0000")
  CDZEman = "*" & c & cler & chn & Space$(14) & "0"
  Exit Function
ErrMA: CDZEman = "Vérifiez ces 2 paramètres : mois, année."
End Function

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

j'ai modifié un peu ton code VBA de Module1, qui était de 145 lignes ;
voici la nouvelle taille du fichier : 62 lignes.  ;)

en fait, c'est même 59 lignes, car tu peux supprimer les 3 lignes
de commentaires de la sub Ligs(), que j'ai écrites seulement
à ton intention.  ;)

bonne lecture ! ... oh, j'allais oublier : ne cherche pas ta fonction
CCPA() : elle n'existe plus !  :D

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.  :)

rhodo

rhodo Posté le 17 août 2023, 18:34
par rhodo
  • Merci beaucoup 'rhodo' – 18 août 2023, 12:34

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :