clarouche33
XLDnaute Nouveau
Bonjour !
J'ai un fichier ws_1 dans lequel j'ai une liste d'identifiants, et pour chacun d'entre eux j'ai la possibilité de renseigner 3 acomptes différents (dans trois colonnes). Ces montants d'acompte sont situés dans un fichier ws_2, où j'ai, sur chaque ligne, l'identifiant, puis le numéro de l'acompte (acompte 1, acompte 2, solde),, puis le montant de l'acompte en question.
J'ai donc utilisé un sumIfs, en prenant pour "résultat" la colonne contenant le montant de l'acompte dans ws_2, comme premier critère, le fait que les identifiants de ws_1 et ws_2 correspondent, et comme second critère le fait que le numéro de l'acompte (1, 2, solde) de ws_2 en face de l'identifiant corresponde au nom de la colonne de ws_1
Toutes mes variables sont à priori bien déclarées.
Les cellules que je veux voir compléter se remplissent d'un 0. J'ai l'impression qu'il y a un problème avec ma plage de "résultat" dans lequel il fait la "somme" (qui n'en est donc pas vraiment une car je ne veux qu'une seule valeur), alors qu'il repère correctement quelle cellule remplir.
Savez vous ce que je pourrai changer pour arranger cela ?
Merci beaucoup !
Edit : les fichiers ws_1 et ws_2. Le résultat souhaité est en feuil2 de ws_1 : le tableau est complété avec les bons montants d'acomptes pour chacun des identifiants
J'ai un fichier ws_1 dans lequel j'ai une liste d'identifiants, et pour chacun d'entre eux j'ai la possibilité de renseigner 3 acomptes différents (dans trois colonnes). Ces montants d'acompte sont situés dans un fichier ws_2, où j'ai, sur chaque ligne, l'identifiant, puis le numéro de l'acompte (acompte 1, acompte 2, solde),, puis le montant de l'acompte en question.
J'ai donc utilisé un sumIfs, en prenant pour "résultat" la colonne contenant le montant de l'acompte dans ws_2, comme premier critère, le fait que les identifiants de ws_1 et ws_2 correspondent, et comme second critère le fait que le numéro de l'acompte (1, 2, solde) de ws_2 en face de l'identifiant corresponde au nom de la colonne de ws_1
Toutes mes variables sont à priori bien déclarées.
Les cellules que je veux voir compléter se remplissent d'un 0. J'ai l'impression qu'il y a un problème avec ma plage de "résultat" dans lequel il fait la "somme" (qui n'en est donc pas vraiment une car je ne veux qu'une seule valeur), alors qu'il repère correctement quelle cellule remplir.
Savez vous ce que je pourrai changer pour arranger cela ?
VB:
'je veux compléter mon fichier ws_1 d'après le montant contenu dans ws_2. Je balaie mes lignes dans ws_1, je repère l'identifiant et le nom de l'acompte. Je vais chercher l'identifiant dans ws_2. Si un montant pour ce type d'acompte est inscrit dans ws_2 dans la ligne de l'identifiant, copier ce montant dans la cellule appropriée de ws_1
With ws_1.Activate
derniereLigne_1 = .Cells(Rows.Count, 1).End(xlUp).Row
derniereLigne_2 = ws_2.Cells(Rows.Count, 1).End(xlUp).Row
colPlage = ws_2.Rows(1).Find(What:="Montant").Column
colCritere1 = ws_2.Rows(1).Find(What:="Acompte").Column
colligne_1 = .Rows(1).Find(What:="Identifiant", LookAt:=xlPart).Column
colligne_2 = ws_2.Rows(1).Find(What:="Identifiant", LookAt:=xlPart).Column
Set plage = ws_2.Range(ws_2.Cells(2, colPlage), ws_2.Cells(derniereLigne_2, colPlage)) 'colonne des montants à copier depuis ws_2
Set critere1 = ws_2.Range(ws_2.Cells(2, colCritere1), ws_2.Cells(derniereLigne_2, colCritere1)) 'colonne du premier critère dans ws_2 : il faut que les deux noms d'acomptes dans ws_1 et ws_2 correspondent
Set critere2 = ws_2.Range(ws_2.Cells(2, colligne_2), ws_2.Cells(derniereLigne_2, colligne_2)) ''colonne du deuxieme critère dans ws_2 : il faut que les deux noms des identifiants dans ws_1 et ws_2 correspondent
For lsub = 2 To derniereLigne_1 'pour chacune des lignes de ws_1
Ident_1 = .Cells(lsub, colligne_1).Value 'numéro identifiant dans ws_1
Ligne_2 = ws_2.Columns(colligne_2).Find(Ident_1).Row 'ligne correponsdante dans ws_2 à l'identifiant précédent
nomAc = ws_2.Cells(Ligne_2, colCritere1).Value
Acompte_1 = .Rows(1).Find(What:=nomAc, LookAt:=xlPart).Column 'colonne contenant le nom d'acompte, dans ws_1
.Cells(lsub, Acompte_1) = Application.WorksheetFunction.SumIfs(plage, critere1, nomAc, critere2, .Cells(lsub, Ident_1))
Next lsub
End With
Merci beaucoup !
Edit : les fichiers ws_1 et ws_2. Le résultat souhaité est en feuil2 de ws_1 : le tableau est complété avec les bons montants d'acomptes pour chacun des identifiants
Pièces jointes
Dernière édition: