Recherchev en vba entre 2 feuilles avec boucle EXCEL
Résolu/Fermé
PYGOS69
Messages postés
452
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
10 octobre 2023
-
6 nov. 2019 à 10:53
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 6 nov. 2019 à 18:24
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 6 nov. 2019 à 18:24
2 réponses
yg_be
Messages postés
22616
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 mars 2024
1 461
6 nov. 2019 à 12:06
6 nov. 2019 à 12:06
bonjour, suggestion:
Dim FeuilleData As Worksheet, FeuilleRésultat As Worksheet, FeuilleDATES As Worksheet 'Déclaration et affectation des variables de travail Dim IndiceFinData As Long, IndiceFinRésultat As Long 'Déclaration et affectation des variables de la boucle - Calcul dernière ligne Dim PlageValeurJOUV As Variant 'Déclaration et affectation de la variable > plage ou appliquer le résultat du calcul en nbre de jours ouvrés Dim CalcDatesJOUV As Range Dim N As Long, cl As Range, dt As Date Set FeuilleRésultat = Sheets("TAO2019") IndiceFinRésultat = FeuilleRésultat.Range("A1").End(xlDown).Row Set FeuilleDATES = Sheets("CalcDates") Set CalcDatesJOUV = FeuilleDATES.Range("m19:m30") For N = 2 To IndiceFinRésultat dt = DateSerial(FeuilleRésultat.Cells(N, "M"), FeuilleRésultat.Cells(N, "N"), 1) For Each cl In CalcDatesJOUV If cl = dt Then FeuilleRésultat.Cells(N, "P") = cl.Offset(0, 1) Exit For End If Next cl Next N
ALS35
Messages postés
1033
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
9 janvier 2024
139
6 nov. 2019 à 17:20
6 nov. 2019 à 17:20
Bonjour,
Essaie ce code corrigé (à partir de ton code initial) pour ton sixième calcul
Cordialement
Essaie ce code corrigé (à partir de ton code initial) pour ton sixième calcul
' 6ème calcul Nombre de jours ouvrés Dim PlageValeurJOUV As Variant 'Déclaration et affectation de la variable > plage ou appliquer le résultat du calcul en nbre de jours ouvrés PlageValeurJOUV = FeuilleRésultat.Range("P1:P" & IndiceFinRésultat).Value 'Boucle sur la colonne pour définir la dernière ligne et saisie résultat en colonne P Dim PlageMois As Variant PlageMois = FeuilleRésultat.Range("N1:N" & IndiceFinRésultat).Value Dim CalcDatesJOUV As Variant CalcDatesJOUV = FeuilleDATES.Range("L19:N30").Value ' Dim N As Long 'Calculs For N = 2 To IndiceFinRésultat 'Boucle sur les lignes feuille Résultat PlageValeurJOUV(N, 1) = Application.VLookup(PlageMois(N, 1), CalcDatesJOUV, 3, False) 'Boucle sur les lignes feuille Data Next N ' boucle FeuilleRésultat.Range("P1:P" & IndiceFinRésultat).Value = PlageValeurJOUV 'Ecriture résultat
Cordialement
PYGOS69
Messages postés
452
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
10 octobre 2023
21
Modifié le 6 nov. 2019 à 18:24
Modifié le 6 nov. 2019 à 18:24
Un grand Merci pour ta disponibilité ! Cela fonctionne !
Bonne fin de journée !
Bonne fin de journée !
6 nov. 2019 à 16:09
Merci pour cette suggestion !
Le fichier plante pendant l'exécution de la macro....
J'ai séparé les 5 premiers calculs du 6ème et à l'enchaînement du 6ème , ça mouline et puis plantage...
6 nov. 2019 à 16:24
J'ai essayé avec 25 lignes, cela fonctionne, mais 80000 lignes c'est long et plantage...
Les 5 premiers calculs prennent quelques secondes. C'est à la 6ème qu'excel rame.
Encore Merci pour ton aide !