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 -
Sol256 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Vba if plusieurs conditions
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
2 réponses
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
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
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é:
le classeur
http://www.cjoint.com/c/EFcgSTvX840
en espèrant que...
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...
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.
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.
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
car sans données, je suis dans le vide et ne peut donc rien faire....
https://www.cjoint.com/?0FbqbhwwlXA