Macro avec plusieurs conditions et boucles
Résolu/Fermé
Sol256
Messages postés
5
Date d'inscription
lundi 1 juin 2015
Statut
Membre
Dernière intervention
3 juin 2015
-
1 juin 2015 à 13:29
Sol256 Messages postés 5 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 3 juin 2015 - 3 juin 2015 à 16:06
Sol256 Messages postés 5 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 3 juin 2015 - 3 juin 2015 à 16:06
A voir également:
- Vba if plusieurs conditions
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
2 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
1 juin 2015 à 14:38
1 juin 2015 à 14:38
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 juin 2015 à 08:45
2 juin 2015 à 08:45
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...
Sol256
Messages postés
5
Date d'inscription
lundi 1 juin 2015
Statut
Membre
Dernière intervention
3 juin 2015
2 juin 2015 à 09:47
2 juin 2015 à 09:47
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 2/06/2015 à 11:15
Modifié par michel_m le 2/06/2015 à 11:15
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 ?
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 ?
Sol256
Messages postés
5
Date d'inscription
lundi 1 juin 2015
Statut
Membre
Dernière intervention
3 juin 2015
3 juin 2015 à 16:06
3 juin 2015 à 16:06
Merci beaucoup j'ai trouvé une autre solution
Modifié par Sol256 le 1/06/2015 à 15:17
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
1 juin 2015 à 15:46
car sans données, je suis dans le vide et ne peut donc rien faire....
1 juin 2015 à 16:02
https://www.cjoint.com/?0FbqbhwwlXA