Macro avec plusieurs conditions et boucles

Résolu
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je dois réaliser une macro qui me permettra d'afficher le montant "total frais" dans un autre tableau d'une autre feuille. Cependant ils y a plusieurs conditions.
Contexte: une feuille A et une autre feuille B
on souhaite insérer dans le tableau de la feuille A (colonne G) le montant du tableau de la feuille B (colonne T) si le numéro de dossier, la date, l'employé et le motif corresponde au données sur la feuille A.

Comment dois je m'y prendre pour que toutes les lignes de la feuille B soit analysées et leur montant réparti dans la feuille A si les conditions sont respectées?

J'espère m'être montrée clair, n'hésitez pas à me demander des précisions :)

2 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
1/dans quelle colonnes se trouvent dans les 2 feuilles
dossier, date,empoyé, motif
2/il ya t il des doublons dans chaque liste ?
3/Combien de lignes environ ?

/pour essayer d'^tre efficace:
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente

0
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
https://www.cjoint.com/?0Fbo6jyFRXo

En effet il peux y avoir des doublons.
Un dossier n'a qu'un seul motif et pour un dossier il peux y avoir plusieurs date avec des employés différents
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Merci de mettre des données avec des dossiers,noms bidon, des dates, motif bidon
car sans données, je suis dans le vide et ne peut donc rien faire....
0
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bien sur, excusez moi :)
https://www.cjoint.com/?0FbqbhwwlXA
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
peu de temps hier, excuse moi

comme j'ai supposé que tu avais peut-^tre plusieurs feuilles "motif" le code est fait par macro paramétrée; C a d que le bouton d'appel macro de ces feuilles déclenche le code en tenant compte du nom de la feuille

le code proposé:
Option Explicit
'-----------
Sub selectionner_motif()
'appel macro reporter frais en fonction de la feuille
reporter_frais ActiveSheet.Name
End Sub
'-----------
Sub reporter_frais(feuille)
Dim Derlig As Byte, T_donnees, T_frais
Dim D_motif As Object, Motif As String, Concat As String, Ligne As Byte
Dim cptr As Byte

'------------------------------------initialisations
Application.ScreenUpdating = False 'fige défilement de l'écran
Set D_motif = CreateObject("scripting.dictionary") 'création d'un dictionnaire
Sheets(feuille).Range("G5:G50").ClearContents 'nettoyage colonne G "frais"

With Sheets("B")
'mémorisations des données et frais
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_donnees = .Range("A6:D" & Derlig)
T_frais = Application.Transpose(.Range("U6:U" & Derlig))
End With
With Sheets(feuille)
'création d'un couple données concaténées, ligne)
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Motif = .Range("C3")
For Ligne = 5 To Derlig
'contaténation des données dossier, employé,date, motif
Concat = .Cells(Ligne, "A") & " " & .Cells(Ligne, "B") & " " & .Cells(Ligne, "C") & " " & Motif
If Not D_motif.exists(Concat) Then D_motif.Add Concat, Ligne
Next
'--------------------------comparaison et report des frais
For cptr = 1 To UBound(T_donnees)
Concat = T_donnees(cptr, 1) & " " & T_donnees(cptr, 2) & " " & T_donnees(cptr, 3) & " " & T_donnees(cptr, 4)
'si concatenation identique report des frais colonne G
If D_motif.exists(Concat) Then .Cells(D_motif.Item(Concat), "G") = T_frais(cptr)
Next
End With
End Sub

le classeur
http://www.cjoint.com/c/EFcgSTvX840

en espèrant que...
0
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de votre réponse complète. Toutefois en effectuant les changements de nom des feuilles, je reçois un message d'erreur d'exécution 1004.
C'est ma première macro/VBA et j'ai du mal à comprendre votre code, je n'arrive donc pas à trouver l'erreur x$
Je vous met donc toutes les feuilles motif (il y en a 3).
http://www.cjoint.com/c/EFchU0FGZ2D
Je vous suis très reconnaissante du temps que vous prenez pour m'aider.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
je reçois un message d'erreur d'exécution 1004.
sur quelle ligne ?
elle est surlignée en jaune dans le code

Pourquoi dans les feuilles motif ne commences tu pas juste sous les ent^tes ?
Pourquoi est ce que dans les feuilles motif les totaux ne sont pas placés sur la m^me ligne ?
0
Sol256 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup j'ai trouvé une autre solution
0