VBA Incompatibilité de type
Bonjour à toutes et tous,
J'ai une macro qui marche parfaitement bien (fichier ci-joint) mais mon dernier module "RapproComplément" m'indique une erreur d'incompatibilité de type que je ne parviens à résoudre.
La fonction dont vous avez le code ci-dessous me permet de faire la somme de montant d'un onglet et de l'inscrire sur l'autre onglet en rajoutant. Or j'ai un problème au lancement de celle-ci car la fonction "CalculerDerniereLigne" (second code) m'affiche une incompatibilité de type mais malgré plusieurs recherches je ne comprends pas d'où cela provient.
Si vous pouviez m'aider à résoudre mon problème cela serait super appréciable.
Function CalculSommePaiement()
Dim NbLignes As Long
Dim DébutLigne As String
Dim ligneBanqueDebut As Long
Dim ligneBanqueFin As Long
Dim i As Long
Call TrierLignesRésoBanq2
NbLignes = ThisWorkbook.Sheets("RésoBanq").Cells(Rows.Count, 16).End(xlUp).Row
ligneBanqueDebut = 2
While ligneBanqueDebut < NbLignes
DébutLigne = ThisWorkbook.Sheets("RésoBanq").Cells(ligneBanqueDebut, 16).Value
ligneBanqueFin = CalculerDerniereLigne(DébutLigne, ligneBanqueDebut)
For i = ligneBanqueDebut To ligneBanqueFin
ThisWorkbook.Sheets("Banque").Range("G" & DébutLigne).Value = Format(Application.WorksheetFunction.Sum(Range("F" & ligneBanqueDebut & ":F" & ligneBanqueFin)), "0.00")
Next i
ligneBanqueDebut = ligneBanqueFin + 1
Wend
Sheets("Banque").Select
Range("G2:G10000").Select
Selection.TextToColumns Destination:=Range("G2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Call Commentaire
Call TrierLignesRésoBanq
End FunctionFunction CalculerDerniereLigne(DébutLigne As String, ligneBanqueDebut As Long) As Long 'calcul la dernière ligne du fichier RésoBanq
Dim i As Long
Dim NbLignes As Long
Dim ligneFin As Long
NbLignes = ThisWorkbook.Sheets("RésoBanq").Cells(Rows.Count, 16).End(xlUp).Row
For i = DébutLigne To NbLignes
If (InStr(1, DébutLigne, ThisWorkbook.Sheets("RésoBanq").Cells(i, 16).Value) > 0) Then
ligneFin = i
End If
Next i
CalculerDerniereLigne = ligneFin
End FunctionJe vous joins également le fichier qui sera sûrement plus facile à comprendre que mes explications du dessus.
Encore merci pour votre temps et votre aide.
Bonjour
Pas certain d'avoir compris mais:
For i = DébutLigne To NbLignes
n'est pas compatible avec
DébutLigne As String
Cordialement
Bonjour Efgé,
Désolé de ne répondre que maintenant, je n'ai pas pu me poser sur le sujet avant.
Merci de t'y être penché dessus, après avoir fait la judicieuse modification que tu m'as proposé, j'ai une incompatibilité de type au niveau de mon "DébutLigne", sur le code ci-dessous car mon "ligneBanqueDebut" que je défini à 2 ce retrouve à 1, je ne sais comment.
Function CalculSommePaiement()
Dim NbLignes As Long
Dim DébutLigne As Long
Dim ligneBanqueDebut As Long
Dim ligneBanqueFin As Long
Dim i As Long
Call TrierLignesRésoBanq2
NbLignes = ThisWorkbook.Sheets("RésoBanq").Cells(Rows.Count, 16).End(xlUp).Row
ligneBanqueDebut = 2
While ligneBanqueDebut < NbLignes
DébutLigne = ThisWorkbook.Sheets("RésoBanq").Cells(ligneBanqueDebut, 16).Value
ligneBanqueFin = CalculerDerniereLigne(DébutLigne, ligneBanqueDebut)
For i = ligneBanqueDebut To ligneBanqueFin
ThisWorkbook.Sheets("Banque").Range("G" & DébutLigne).Value = Format(Application.WorksheetFunction.Sum(Range("F" & ligneBanqueDebut & ":F" & ligneBanqueFin)), "0.00")
Next i
ligneBanqueDebut = ligneBanqueFin + 1
WendJe joins également ma macro avec des fichiers qui ont fonctionné afin que mes premières explications soient plus claires.
Cordialement