trouver la somme grace a deux colonne sous VBA Excel

ririrourou

XLDnaute Nouveau
Bonjour,

Je cherche quelqu'un qui pourra me trouver l'erreur commise dans ce code :(. En fait, je cherche à faire la somme des cellule figurant dans la colonne J grâce aux données figurant dans les colonnes A et B :

Dans ce code je cherche d'abord dans la colonnes B tous les numéros de compte qui commencent par 42... Pour chaque Numéro de compte trouvé on regarde si la valeur de la cellule A est égal à la lettre "C" si c'est vrai on ajoute la valeur de la cellule se trouvant dans la colonne J a notre "total" . Voici mon code

Code:
Function CreditPassif(No, cd) As Double
 
    Dim c As Range
    Dim Ad As String
 
    'Balance est la feuille sur laquelle je travaille.
    'Dans la colonne des B il y a des numéros de compte
    With Worksheets("Balance").Range("B1:B" & Range("B65536").End(xlUp).Row)
        Set c = .Find(What:=No, LookIn:=xlValues, LookAt:=xlPart, _
                        SearchOrder:=xlByRows, SearchDirection:=xlNext)
        If Not c Is Nothing Then
            Ad = c.Address
            Do
                'Je cherche les numéro de compte grâce au soit les 2, 3 ou 4 premiers chiffres
                If Left(c, 2) = No Or Left(c, 3) = No Or Left(c, 4) = No Then
                    'la valeur de la cellule relatif dans la colonnes A doit être égale à cd (c'est la ou je se trouve le problème)                     
                    If c.Offset(0, -1) = cd Then
                        'La somme de la cellule se trouvant dans la colonne des J 
                        CreditPassif = CreditPassif + c.Offset(0, 8)
                    End If
                End If
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Offset <> Ad
        End If
    End With
 
End Function
 
Sub TotalPassif()
Dim Tablo As Variant, Totaux() As Double, Total As Double, somme As Double
 
     'les numéro de compte doivent commencer par 42...
     Tablo = Array(42)
 
    For i = 0 To UBound(Tablo)
         ReDim Preserve Totaux(i)
         'C représente la valeur de la colonne A donc on cherche les numéro de compte qui commence par 42 dans la colonne B une fois trouver un compte on voit si la valeur de la colonne des A est égale à lettre C
         Totaux(i) = CreditPassif(CStr(Tablo(i)), "C")
    Next
    'Pour voir les résultats :
 
    For i = 0 To UBound(Totaux)
        Total = Total + Totaux(i)
    Next
 
    MsgBox ("le total Passif est : " & Total)
 
End Sub

J'espère seulement que j'étais claire :confused:

Merci d'avance :)
 

pierrejean

XLDnaute Barbatruc
Re : trouver la somme grace a deux colonne sous VBA Excel

bonjour ririrourou

1) A priori la condition:

Code:
If Left(c, 2) = No Or Left(c, 3) = No Or Left(c, 4) = No Then

ne sera jamais remplie puisque c=No

2) Nous cherchons a tester nos solutions
pour ce faire 2 hypotheses
a) nous avons un fichier : tout va bien
b) nous avons un code : il nous faut creer un fichier exemple cadrant avec le code

Si le problème nous parait interessant c'est avec plaisir que nous realisons ce petit boulot , mais dans le cas ou il ne s'agit que de vba basique on a plutot tendance a passer notre chemin

Dans quel cas penses-tu te situer ?
 

GIBI

XLDnaute Impliqué
Re : trouver la somme grace a deux colonne sous VBA Excel

Bonjour,

Le classeur Excel serait le bien venu car difficile de ne regarder que le code car même si l'on constitue un jeux d'essai nous n'aurons pas le vrai contexte.

Ai-je besoin de demander si vous avez fait un test en pas à pas? Non je suppose

a+ avec exemple

GIBI
 

ririrourou

XLDnaute Nouveau
Re : trouver la somme grace a deux colonne sous VBA Excel

Bonjour tout le monde,

Bon pour répondre d'abord a Monsieur PierreJean, je sais vraiment pas ce que vous voulez dire par:

Si le problème nous parait interessant c'est avec plaisir que nous realisons ce petit boulot , mais dans le cas ou il ne s'agit que de vba basique on a plutot tendance a passer notre chemin

Dans quel cas penses-tu te situer ?

Mais si je trouvez que c'était banal j'aurais pas posté pour avoir de l'aide :) sinon qui vous dit que c = No? Mais pas du tout dans le code que je vous ai filés:

Code:
Set c = .Find(What:=No, LookIn:=xlValues, LookAt:=xlPart, _
                        SearchOrder:=xlByRows, SearchDirection:=xlNext)

No est en fait une partie de c puisque la recherche ne se fait pas sur la cellule toute entière (LookAt:=xlPart)

Sinon pour répondre a Gibi effectivement j'ai fait un test pas à pas détaillé mais ça me donne rien :confused::confused::confused: le programme se bloque

En fait pour plus de précision j'ajoute dans mon classeur joint le programme que j'utilisais avant qui me permettait de trouver la somme mais en faisant une recherche que sur les numéros de compte (avant d'ajouter dans les condition le fait que valeur(Ai) doit être égale à "C")

Merci d'avance :) :rolleyes: ;)
 

Pièces jointes

  • Exemple.xls
    39 KB · Affichages: 82
  • Exemple.xls
    39 KB · Affichages: 76
  • Exemple.xls
    39 KB · Affichages: 81

cbea

XLDnaute Impliqué
Re : trouver la somme grace a deux colonne sous VBA Excel

Bonjour ririrourou, pierrejean, gibi,

Dans la fonction Result, remplacer:
Code:
If Left(c, 2) = No Then Result = Result + c.Offset(0, 1)
par :
Code:
If Left(c, 2) = No And c.Offset(0, -1) = "C" Then Result = Result + c.Offset(0, 1)
 

pierrejean

XLDnaute Barbatruc
Re : trouver la somme grace a deux colonne sous VBA Excel

Re

Salut cbea :) :)

@ Monsieur ririrourou

Le fichier m'aura permis de voir qu'en colonne B il y a des nombres et non des String
De ce fait il est exclu que le
Set c = .Find(What:=No, LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext)
sorte quelque chose avec par exemple 120000 pour No=12

Par ailleurs , jai trouvé le problème interessant (grace au fichier) et je te propose 2 fonctions Cp et cpbis
 

Pièces jointes

  • ririrourouExemple.zip
    12.6 KB · Affichages: 37

ririrourou

XLDnaute Nouveau
Re : trouver la somme grace a deux colonne sous VBA Excel

ReBonjour;

merci à tous d'avoir participé à cette conversation et un grooos merci à Messieurs cbea et PierreJean qui m'ont aidée a trouver la solution à mon problème :):):)

a très bientôt ;););)
 

Discussions similaires

Réponses
6
Affichages
244

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95